Indexing pulse positions and signs in algebraic codebooks for coding of wideband signals

ABSTRACT

The indexing method comprises forming a set of tracks of pulse positions, restraining the positions of the non-zero-amplitude pulses of the combinations of the codebook in accordance with the set of tracks of pulse positions, and indexing in the codebook each non-zero-amplitude pulse of the combinations at least in relation to the position of the in the corresponding track, the amplitude of the pulse, and the number of pulse positions in said corresponding track. For indexing the position(s) of one and two non-zero amplitude pulse(s) in one track, procedures code —   1  pulse and code —   2  pulse are respectively used. When the positions of a number X of non-zero-amplitude pulses are located in one track, X≧3, subindices of these X pulses are calculated using the procedures code —   1  pulse and code —   2  pulse, and a global index is calculated by combining these subindices.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is the national phase of International (PCT) PatentApplication Serial No. PCT/CA01/01675, filed Nov. 22, 2001, publishedunder PCT Article 21(2) in English, which claims priority to and thebenefit of Canadian Patent Application No. 2,327,041, filed Nov. 22,2000, the disclosures of which are incorporated herein by reference.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to a technique for digitally encoding asignal, in particular but not exclusively a speech signal, in view oftransmitting and synthesizing this signal. More specifically, thepresent invention is concerned with a method for indexing the pulsepositions and amplitudes of non-zero-amplitude pulses, in particular butnot exclusively in very large algebraic codebooks needed forhigh-quality coding of wideband signals based on Algebraic Code ExcitedLinear Prediction (ACELP) techniques.

2. Brief Description of the Current Technology

The demand for efficient digital wideband speech/audio encodingtechniques with a good subjective quality/bit rate trade-off isincreasing for numerous applications such as audio/videoteleconferencing, multimedia, and wireless applications, as well asinternet and packet network applications. Until recently, telephonebandwidths filtered in the range 200-3400 Hz were mainly used in speechcoding applications. However, there is an increasing demand for widebandspeech applications in order to increase the intelligibility andnaturalness of the speech signals. A bandwidth in the range 50-7000 Hzwas found sufficient for delivering a face-to-face speech quality. Foraudio signals, this range gives an acceptable audio quality, but isstill lower than the CD (Compact Disk) quality which operates in therange 20-20000 Hz.

A speech encoder converts a speech signal into a digital bitstream whichis transmitted over a communication channel (or stored in a storagemedium). The speech signal is digitized (sampled and quantized withusually 16-bits per sample) and the speech encoder has the role ofrepresenting these digital samples with a smaller number of bits whilemaintaining a good subjective speech quality. The speech decoder orsynthesizer operates on the transmitted or stored bitstream and convertsit back to a sound signal.

One of the best prior art techniques capable of achieving a goodquality/bit rate trade-off is the so-called CELP (Code Excited LinearPrediction) technique. According to this technique, the sampled speechsignal is processed in successive blocks of L samples usually calledframes where L is some predetermined number (corresponding to 10-30 msof speech). In CELP, a LP (Linear Prediction) synthesis filter iscomputed and transmitted every frame. The L-sample frame is then dividedinto smaller blocks called subframes of size N samples, where L=kN and kis the number of subframes in a frame (N usually corresponds to 4-10 msof speech). An excitation signal is determined in each subframe, whichusually consists of two components: one from the past excitation (alsocalled pitch contribution or adaptive codebook) and the other from aninnovative codebook (also called fixed codebook). This excitation signalis transmitted and used at the decoder as the input of the LP synthesisfilter in order to obtain the synthesized speech.

To synthesize speech according to the CELP technique, each block of Nsamples is synthesized by filtering an appropriate codevector from theinnovation codebook through time-varying filters modeling the spectralcharacteristics of the speech signal. These filters consist of a pitchsynthesis filter (usually implemented as an adaptive codebook containingthe past excitation signal) and an LP synthesis filter. At the encoderend, the synthesis output is computed for all, or a subset, of thecodevectors from the codebook (codebook search). The retained codevectoris the one producing the synthesis output closest to the original speechsignal according to a perceptually weighted distortion measure. Thisperceptual weighting is performed using a so-called perceptual weightingfilter, which is usually derived from the LP synthesis filter.

An innovative codebook in the CELP context, is an indexed set ofN-sample-long sequences which will be referred to as N-dimensionalcodevectors. Each codebook sequence is indexed by an integer k rangingfrom 1 to M where M represents the size of the codebook often expressedas a number of bits b, where M=2^(b).

A codebook can be stored in a physical memory, e.g. a look-up table(stochastic codebook), or can refer to a mechanism for relating theindex to a corresponding codevector, e.g. a formula (algebraiccodebook).

A drawback of the first type of codebooks, stochastic codebooks, is thatthey often involve substantial physical storage. They are stochastic,i.e. random in the sense that the path from the index to the associatedcodevector involves look-up tables which are the result of randomlygenerated numbers or statistical techniques applied to large speechtraining sets. The size of stochastic codebooks tends to be limited bystorage and/or search complexity.

The second type of codebooks are the algebraic codebooks. By contrastwith the stochastic codebooks, algebraic codebooks are not random andrequire no substantial storage. An algebraic codebook is a set ofindexed codevectors of which the amplitudes and positions of the pulsesof the k^(th) codevector can be derived from a corresponding index kthrough a rule requiring no, or minimal, physical storage. Therefore,the size of algebraic codebooks is not limited by storage requirements.Algebraic codebooks can also be designed for efficient search.

The CELP model has been very successful in encoding telephone band soundsignals, and several CELP-based standards exist in a wide range ofapplications, especially in digital cellular applications. In thetelephone band, the sound signal is band-limited to 200-3400 Hz andsampled at 8000 samples/sec. In wideband speech/audio applications, thesound signal is band-limited to 50-7000 Hz and sampled at 16000samples/sec.

Some difficulties arise when applying the telephone band optimized CELPmodel to wideband signals, and additional features need to be added tothe model in order to obtain high quality wideband signals. Thesefeatures include efficient perceptual weighting filtering, varyingbandwith pitch filtering, and efficient gain smoothing and pitchenhancement techniques. An other important issue that arise in codingwideband signals is the need to use very large excitation codebooks.Therefore, efficient codebook structures that require minimal storageand can be rapidly searched become very important. Algebraic codebookshave been known for their efficiciency and are now widely used invarious speech coding standards. Algebraic codebooks and related fastsearch procedures are described in U.S. Pat. No. 5,444,816 (Adoul etal.) issued on Aug. 22, 1995; U.S. Pat. No. 5,699,482 granted to Adoulet al., on Dec. 17, 1997; U.S. Pat. No. 5,754,976 granted to Adoul etal., on May 19, 1998; and U.S. Pat. No. 5,701,392 (Adoul et al.) datedDec. 23, 1997.

OBJECT OF THE INVENTION

An object of the present invention is to provide a new procedure forindexing pulse positions and amplitudes in algebraic codebooks forefficiently encoding in particular but not exclusively wideband signals.

SUMMARY OF THE INVENTION

In accordance with the present invention, there is provided a method ofindexing pulse positions and amplitudes in an algebraic codebook forefficient encoding and decoding of a sound signal. The codebookcomprises a set of pulse amplitude/position combinations each defining anumber of different positions and comprising both zero-amplitude pulsesand non-zero-amplitude pulses assigned to respective positions of thecombination. Each non-zero-amplitude pulse assumes one of a plurality ofpossible amplitudes and the indexing method comprises:

forming a set of at least one track of these pulse positions;

restraining the positions of the non-zero-amplitude pulses of thecombinations of the codebook in accordance with the set of at least onetrack of pulse positions;

establishing a procedure 1 for indexing the position and amplitude ofone non-zero-amplitude pulse when only the position of thisnon-zero-amplitude pulse is located in one track of the set;

establishing a procedure 2 for indexing the positions and amplitudes oftwo non-zero-amplitude pulses when only the positions of these twonon-zero-amplitude pulses are located in one track of the set; and

when the positions of a number X of non-zero-amplitude pulses arelocated in one track of the set, wherein X≧3:

-   -   dividing the positions of the track into two sections;    -   using a procedure X for indexing the positions and amplitudes of        the X non-zero-amplitude pulses, this procedure X comprising:        -   identifying in which one of the two track sections each            non-zero-amplitude pulse is located;        -   calculating subindices of the X non-zero-amplitude pulses            using the established procedures 1 and 2 in at least one of            the track sections and entire track; and        -   calculating a position-and-amplitude index of the X            non-zero-amplitude pulses by combining the subindices.

Preferably, calculating a position-and-amplitude index of the Xnon-zero-amplitude pulses comprises:

-   -   calculating at least one intermediate index by combining at        least two of the subindices; and    -   calculating the position-and-amplitude index of these X        non-zero-amplitude pulses by combining the remaining subindices        and the at least one intermediate index.

The present invention also relates to a device for indexing pulsepositions and amplitudes in an algebraic codebook for efficient encodingor decoding of a sound signal. The codebook comprises a set of pulseamplitude/position combinations, each pulse amplitude/positioncombination defines a number of different positions and comprises bothzero-amplitude pulses and non-zero-amplitude pulses assigned torespective positions of the combination, and each non-zero-amplitudepulse assumes one of a plurality of possible amplitudes. The indexingdevice comprises:

means for forming a set of at least one track of the pulse positions;

means for restraining the positions of the non-zero-amplitude pulses ofthe combinations of the codebook in accordance with the set of at leastone track of pulse positions;

means for establishing a procedure 1 for indexing the position andamplitude of one non-zero-amplitude pulse when only the position of thisnon-zero-amplitude pulse is located in one track of the set;

means for establishing a procedure 2 for indexing the positions andamplitudes of two non-zero-amplitude pulses when only the positions ofthese two non-zero-amplitude pulses are located in one track of the set;and

when the positions of a number X of non-zero-amplitude pulses arelocated in one track of the set, wherein X≧3:

-   -   means for dividing the positions of the track into two sections;    -   means for conducting a procedure X for indexing the positions        and amplitudes of the X non-zero-amplitude pulses, this        procedure X conducting means comprising:        -   means for identifying in which one of the two track sections            each non-zero-amplitude pulses is located; and        -   means for calculating subindices of the X non-zero-amplitude            pulses using the established procedures 1 and 2 in at least            one of the track sections and entire track; and        -   means for calculating a position and amplitude index of the            X non-zero-amplitude pulses, said index calculating means            comprising means for combining the subindices.

Preferably, the means for calculating a position-and-amplitude index ofthe X non-zero-amplitude pulses comprises:

-   -   means for calculating at least one intermediate index by        combining at least two of the subindices; and    -   calculating the position-and-amplitude index of the X        non-zero-amplitude pulses by combining the remaining subindices        and this at least one intermediate index.

The present invention further relates to:

-   an encoder for encoding a sound signal, comprising sound signal    processing means responsive to the sound signal for producing speech    signal encoding parameters, wherein the sound signal processing    means comprises:    -   means for searching an algebraic codebook in view of producing        at least one of the speech signal encoding parameters; and    -   a device as described above for indexing pulse positions and        amplitudes in said algebraic codebook;-   a decoder for synthesizing a sound signal in response to sound    signal encoding parameters, comprising:    -   encoding parameter processing means responsive to the sound        signal encoding parameters to produce an excitation signal,        wherein the encoding parameter processing means comprises:        -   an algebraic codebook responsive to at least one of the            sound signal encoding parameters to produce a portion of the            excitation signal; and        -   a device as described above for indexing pulse positions and            amplitudes in the algebraic codebook; and    -   synthesis filter means for synthesizing the sound signal in        response to the excitation signal;-   a cellular communication system for servicing a large geographical    area divided into a plurality of cells, comprising:    -   mobile transmitter/receiver units;    -   cellular base stations respectively situated in the cells;    -   means for controlling communication between the cellular base        stations;    -   a bidirectional wireless communication sub-system between each        mobile unit situated in one cell and the cellular base station        of said one cell, the bidirectional wireless communication        sub-system comprising in both the mobile unit and the cellular        base station (a) a transmitter including means for encoding a        speech signal and means for transmitting the encoded speech        signal, and (b) a receiver including means for receiving a        transmitted encoded speech signal and means for decoding the        received encoded speech signal;        -   wherein the speech signal encoding means comprises means            responsive to the speech signal for producing speech signal            encoding parameters, and wherein the speech signal encoding            parameter producing means comprises means for searching an            algebraic codebook in view of producing at least one of the            speech signal encoding parameters, and a device as described            above for indexing pulse positions and amplitudes in the            algebraic codebook, the speech signal constituting the sound            signal;-   a cellular network element comprising (a) a transmitter including    means for encoding a speech signal and means for transmitting the    encoded speech signal, and (b) a receiver including means for    receiving a transmitted encoded speech signal and means for decoding    the received encoded speech signal;    -   wherein the speech signal encoding means comprises means        responsive to the speech signal for producing speech signal        encoding parameters, and wherein the speech signal encoding        parameter producing means comprises means for searching an        algebraic codebook in view of producing at least one of the        speech signal encoding parameters, and a device as described        above for indexing pulse positions and amplitudes in said        algebraic codebook;-   a cellular mobile transmitter/receiver unit comprising (a) a    transmitter including means for encoding a speech signal and means    for transmitting the encoded speech signal, and (b) a receiver    including means for receiving a transmitted encoded speech signal    and means for decoding the received encoded speech signal;    -   wherein the speech signal encoding means comprises means        responsive to the speech signal for producing speech signal        encoding parameters, and wherein the speech signal encoding        parameter producing means comprises means for searching an        algebraic codebook in view of producing at least one of the        speech signal encoding parameters, and a device as described        above for indexing pulse positions and amplitudes in the        algebraic codebook; and-   in a cellular communication system for servicing a large    geographical area divided into a plurality of cells, and comprising:    mobile transmitter/receiver units; cellular base stations    respectively situated in the cells; and means for controlling    communication between the cellular base stations;    -   a bidirectional wireless communication sub-system between each        mobile unit situated in one cell and the cellular base station        of said one cell, said bidirectional wireless-communication        sub-system comprising in both the mobile unit and the cellular        base station (a) a transmitter including means for encoding a        speech signal and means for transmitting the encoded speech        signal, and (b) a receiver including means for receiving a        transmitted encoded speech signal and means for decoding the        received encoded speech signal;        -   wherein the speech signal encoding means comprises means            responsive to the speech signal for producing speech signal            encoding parameters, and wherein the speech signal encoding            parameter producing means comprises means for searching an            algebraic codebook in view of producing at least one of the            speech signal encoding parameters, and a device as described            above for indexing pulse positions and amplitudes in the            algebraic codebook.

The foregoing and other objects, advantages and features of the presentinvention will become more apparent upon reading of the following nonrestrictive description of preferred embodiments thereof, given by wayof example only with reference to the accompnying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

In the appended drawings:

FIG. 1 is a schematic block diagram of a preferred embodiment ofwideband encoding device;

FIG. 2 is a schematic block diagram of a preferred embodiment ofwideband decoding device;

FIG. 3 is a schematic block diagram of a preferred embodiment of pitchanalysis device;

FIG. 4 is a simplified, schematic block diagram of a cellularcommunication system in which the wideband encoding device of FIG. 1 andthe wideband decoding device of FIG. 2 can be implemented; and

FIG. 5 is a flow chart of a preferred embodiment for a procedure forencoding two signed pulses in a track of length k=2^(M), includingindexing of the pulse positions and signs.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

As well known to those of ordinary skill in the art, a cellularcommunication system such as 401 (FIG. 4) provides a telecommunicationservice over a large geographic area by dividing that large geographicarea into a number C of smaller cells. The C smaller cells are servicedby respective cellular base stations 402 ₁, 402 ₂ . . . 402 _(C) toprovide each cell with radio signalling, audio and data channels.

Radio signalling channels are used to place calls to mobileradiotelephones (mobile transmitter/receiver units) such as 403 withinthe limits of the coverage area (cell) of the cellular base station 402,and to place calls to other radiotelephones 403 located either inside oroutside the base station's cell or to another network such as the PublicSwitched Telephone Network (PSTN) 404.

Once a radiotelephone 403 has successfully placed or received a call, anaudio or data channel is established between this radiotelephone 403 andthe cellular base station 402 corresponding to the cell in which theradiotelephone 403 is situated, and communication between the basestation 402 and radiotelephone 403 is conducted over that audio or datachannel. The radiotelephone 403 may also receive control or timinginformation over a signalling channel while a call is in progress.

If a radiotelephone 403 leaves a cell and enters another adjacent cellwhile a call is in progress, the radiotelephone 403 hands over the callto an available audio or data channel of the new cell base station 402.If a radiotelephone 403 leaves a cell and enters another adjacent cellwhile no call is in progress, the radiotelephone 403 sends a controlmessage over the signalling channel to log into the base station 402 ofthe new cell. In this manner mobile communication over a widegeographical area is possible.

The cellular communication system 401 further comprises a controlterminal 405 to control communication between the cellular base stations402 and the PSTN 404, for example during a communication between aradiotelephone 403 and the PSTN 404, or between a radiotelephone 403located in a first cell and a radiotelephone 403 situated in a secondcell.

Of course, a bidirectional wireless radio communication subsystem isrequired to establish an audio or data channel between a base station402 of one cell and a radiotelephone 403 located in that cell. Asillustrated in very simplified form in FIG. 4, such a bidirectionalwireless radio communication subsystem typically comprises in theradiotelephone 403:

-   a transmitter 406 including:    -   an encoder 407 for encoding a voice signal or other signal to be        transmitted; and    -   a transmission circuit 408 for transmitting the encoded signal        from the encoder 407 through an antenna such as 409; and-   a receiver 410 including:    -   a receiving circuit 411 for receiving a transmitted encoded        voice signal or other signal usually through the same antenna        409; and    -   a decoder 412 for decoding the received encoded signal from the        receiving circuit 411.

The radiotelephone 403 further comprises other conventionalradiotelephone circuits 413 to supply a voice signal or other signal tothe encoder 407 and to process the voice signal or other signal from thedecoder 412. These radiotelephone circuits 413 are well known to thoseof ordinary skill in the art and, accordingly, will not be furtherdescribed in the present specification.

Also, such a bidirectional wireless radio communication subsystemtypically comprises in the base station 402:

-   a transmitter 414 including:    -   an encoder 415 for encoding the voice signal or other signal to        be transmitted; and    -   a transmission circuit 416 for transmitting the encoded signal        from the encoder 415 through an antenna such as 417; and-   a receiver 418 including:    -   a receiving circuit 419 for receiving a transmitted encoded        voice signal or other signal through the same antenna 417 or        through another different antenna (not shown); and    -   a decoder 420 for decoding the received encoded signal from the        receiving circuit 419.

The base station 402 further comprises, typically, a base stationcontroller 421, along with its associated database 422, for controllingcommunication between the control terminal 405 and the transmitter 414and receiver 418. The base station controller 421 will also controlcommunication between the receiver 418 and the transmitter 414 in thecase of communication between two radiotelephones such as 403 located inthe same cell as base station 402.

As well known to those of ordinary skill in the art, encoding isrequired in order to reduce the bandwidth necessary to transmit asignal, for example a voice signal such as speech, across thebidirectional wireless radio communication subsystem, i.e., between aradiotelephone 403 and a base station 402.

LP voice encoders (such as 415 and 407) typically operating at 13kbits/second and below such as Code-Excited Linear Prediction (CELP)encoders typically use a LP synthesis filter to model the short-termspectral envelope of the speech signal. The LP information istransmitted, typically, every 10 or 20 ms to the decoder (such 420 and412) and is extracted at the decoder end.

The novel techniques disclosed in the present specification can be usedwith telephone-band signals including speech, with sound signals otherthan speech as well with other types of wideband signals.

FIG. 1 shows a general block diagram of a CELP-type speech encodingdevice 100 modified to better accommodate wideband signals. Widebandsignals may comprise, amongst others, signals such as music and videosignals.

The sampled input speech signal 114 is divided into successive L-sampleblocks called “frames”. In each frame, different parameters representingthe speech signal in the frame are computed, encoded, and transmitted.LP parameters representing the LP synthesis filter are usually computedonce every frame. The frame is further divided into smaller blocks of Nsamples (blocks of length N), in which excitation parameters (pitch andinnovation) are determined. In the CELP literature, these blocks oflength N are called “subframes” and the N-sample signals in thesubframes are referred to as N-dimensional vectors. In this preferredembodiment, the length N corresponds to 5 ms while the length Lcorresponds to 20 ms, which means that a frame contains four subframes(N=80 at the sampling rate of 16 kHz and 64 after down-sampling to 12.8kHz). Various N-dimensional vectors occur in the encoding procedure. Alist of the vectors which appear in FIGS. 1 and 2 as well as a list oftransmitted parameters are given herein below:

List of the Main N-dimensional Vectors

s Wideband signal input speech vector (after down- sampling,pre-processing, and preemphasis); s_(w) Weighted speech vector; s₀Zero-input response of weighted synthesis filter; s_(p) Down-sampledpre-processed signal; ŝ Oversampled synthesized speech signal; s′Synthesis signal before deemphasis; s_(d) Deemphasized synthesis signal;s_(h) Synthesis signal after deemphasis and postprocessing; x Targetvector for pitch search; x₂ Target vector for innovation search; hWeighted synthesis filter impulse response; v_(T) Adaptive (pitch)codebook vector at delay T; y_(T) Filtered pitch codebook vector (v_(T)convolved with h); c_(k) Innovative codevector at index k (k-th entry ofthe innovation codebook); c_(f) Enhanced scaled innovation codevector; uExcitation signal (scaled innovation and pitch codevectors); u′ Enhancedexcitation; z Band-pass noise sequence; w′ White noise sequence; and wScaled noise sequence.

List of Transmitted Parameters

STP Short term prediction parameters (defining A(z)); T Pitch lag (orpitch codebook index); b Pitch gain (or pitch codebook gain); j Index ofthe low-pass filter used on the pitch codevector; k Codevector index(innovation codebook entry); and g Innovation codebook gain.

In this preferred embodiment, the STP parameters are transmitted onceper frame and the rest of the parameters are transmitted every subframe(four times per frame).

Encoder Side

The sampled speech signal is encoded on a block by block basis by theencoding device 100 of FIG. 1 which is broken down into eleven modulesnumbered from 101 to 111.

The input speech signal is processed in the above mentioned L-sampleblocks called frames.

Referring to FIG. 1, the sampled input speech signal 114 is down-sampledin a down-sampling module 101. For example, the signal is down-sampledfrom 16 kHz down to 12.8 kHz, using techniques well known to those ofordinary skill in the art. Down-sampling down to another frequency canof course be envisaged. Down-sampling increases the coding efficiency,since a smaller frequency bandwidth is encoded. This also reduces thealgorithmic complexity since the number of samples in a frame isdecreased. The use of down-sampling becomes significant when the bitrate is reduced below 16 kbit/s; down-sampling is not essential above 16kbit/s.

After down-sampling, the 320-sample frame of 20 ms is reduced to a256-sample frame (down-sampling ratio of 4/5).

The input frame is then supplied to the optional pre-processing block102. Pre-processing block 102 may consist of a high-pass filter with a50 Hz cut-off frequency. High-pass filter 102 removes the unwanted soundcomponents below 50 Hz.

The down-sampled pre-processed signal is denoted by s_(p)(n), n=0, 1, 2,. . . , L−1, where L is the length of the frame (256 at a samplingfrequency of 12.8 kHz). In a preferred embodiment, the signal s_(p)(n)is preemphasized using a preemphasis filter 103 having the followingtransfer function:P(z)=1−μ_(z) ⁻¹where μ is a preemphasis factor with a value located between 0 and 1 (atypical value is μ=0.7), and z represents the variable of the polynomialP(z). A higher-order filter could also be used. It should be pointed outthat high-pass filter 102 and preemphasis filter 103 can be interchangedto obtain more efficient fixed-point implementations.

The function of the preemphasis filter 103 is to enhance the highfrequency contents of the input signal. It also reduces the dynamicrange of the input speech signal, which renders it more suitable forfixed-point implementation. Without preemphasis, LP analysis infixed-point using single-precision arithmetic is difficult to implement.

Preemphasis also plays an important role in achieving a proper overallperceptual weighting of the quantization error, which contributes toimprove sound quality. This will be explained in more detail hereinbelow.

The output of the preemphasis filter 103 is denoted s(n). This signal isused for performing LP analysis in calculator module 104. LP analysis isa technique well known to those of ordinary skill in the art. In thispreferred embodiment, the autocorrelation approach is used. In theautocorrelation approach, the signal s(n) is first windowed using aHamming window (having usually a length of the order of 30-40 ms). Theautocorrelations are computed from the windowed signal, andLevinson-Durbin recursion is used to compute LP filter coefficients,a_(i), where i=1, . . . , p, and where p is the LP order, which istypically 16 in wideband coding. The parameters a_(i) are thecoefficients of the transfer function of the LP filter, which is givenby the following relation:

${A(z)} = {1 + {\sum\limits_{i = 1}^{p}{\alpha_{i}z^{- 1}}}}$

LP analysis is performed in calculator module 104, which also performsthe quantization and interpolation of the LP filter coefficients. The LPfilter coefficients are first transformed into another equivalent domainmore suitable for quantization and interpolation purposes. The linespectral pair (LSP) and immitance spectral pair (ISP) domains are twodomains in which quantization and interpolation can be efficientlyperformed. The 16 LP filter coefficients, a_(i), can be quantized in theorder of 30 to 50 bits using split or multi-stage quantization, or acombination thereof. The purpose of the interpolation is to enableupdating the LP filter coefficients every subframe while transmittingthem once every frame, which improves the encoder performance withoutincreasing the bit rate. Quantization and interpolation of the LP filtercoefficients are believed to be otherwise well known to those ofordinary skill in the art and, accordingly, will not be furtherdescribed in the present specification.

The following paragraphs will describe the rest of the coding operationsperformed on a subframe basis. In the following description, the filterA(z) denotes the unquantized interpolated LP filter of the subframe, andthe filter Â(z) denotes the quantized interpolated LP filter of thesubframe.

Perceptual Weighting:

In analysis-by-synthesis encoders, the optimum pitch and innovationparameters are searched by minimizing the mean squared error between theinput speech and the synthesized speech in a perceptually weighteddomain. This is equivalent to minimizing the error between the weightedinput speech and weighted synthesis speech.

The weighted signal s_(W)(n) is computed in a perceptual weightingfilter 105. Traditionally, the weighted signal s_(W)(n) is computed by aweighting filter having a transfer function W(z) in the form:W(z)=A(z/γ ₁)/A(z/γ ₂) where 0<γ₂<γ₁≦1

As well known to those of ordinary skill in the art, in formeranalysis-by-synthesis (AbS) encoders, analysis shows that thequantization error is weighted by a transfer function W⁻¹(z), which isthe inverse of the transfer function of the perceptual weighting filter105. This result is well described by B. S. Atal and M. R. Schroeder in“Predictive coding of speech and subjective error criteria”, IEEETransaction ASSP, vol. 27, no. 3, pp. 247-254, June 1979. Transferfunction W⁻¹(z) exhibits some of the formant structure of the inputspeech signal. Thus, the masking property of the human ear is exploitedby shaping the quantization error so that it has more energy in theformant regions where it will be masked by the strong signal energypresent in these regions. The amount of weighting is controlled by thefactors γ₁ and γ₂.

The above traditional perceptual weighting filter 105 works well withtelephone band signals. However, it was found that this traditionalperceptual weighting filter 105 is not suitable for efficient perceptualweighting of wideband signals. It was also found that the traditionalperceptual weighting filter 105 has inherent limitations in modellingthe formant structure and the required spectral tilt concurrently. Thespectral tilt is more pronounced in wideband signals due to the widedynamic range between low and high frequencies. To solve this problem,it has been suggested to add a tilt filter into W(z) in order to controlthe tilt and formant weighting of the wideband input signal separately.

A better solution to this problem is to introduce the preemphasis filter103 at the input, compute the LP filter A(z) based on the preemphasizedspeech s(n), and use a modified filter W(z) by fixing its denominator.

LP analysis is performed in module 104 on the preemphasized signal s(n)to obtain the LP filter A(z). Also, a new perceptual weighting filter105 with fixed denominator is used. An example of transfer function forthis perceptual weighting filter 104 is given by the following relation:W(z)=A(z/γ ₁)/(1−γ₂ z ⁻¹) where 0<γ₂<γ₁≦1

A higher order can be used at the denominator. This structuresubstantially decouples the formant weighting from the tilt.

Note that because A(z) is computed based on the preemphasized speechsignal s(n), the tilt of the filter 1/A(z/γ₁) is less pronouncedcompared to the case when A(z) is computed based on the original speech.Since deemphasis is performed at the decoder end using a filter havingthe transfer function:P ⁻¹(z)=1/(1−μ_(z) ⁻¹),the quantization error spectrum is shaped by a filter having a transferfunction W⁻¹(z)P⁻¹(z). When γ₁ is set equal to μ, which is typically thecase, the spectrum of the quantization error is shaped by a filter whosetransfer function is 1/A(z/γ₁), with A(z) computed based on thepreemphasized speech signal. Subjective listening showed that thisstructure for achieving the error shaping by a combination ofpreemphasis and modified weighting filtering is very efficient forencoding wideband signals, in addition to the advantages of ease offixed-point algorithmic implementation.

Pitch Analysis:

In order to simplify the pitch analysis, an open-loop pitch lag T_(OL)is first estimated in the open-loop pitch search module 106 using theweighted speech signal s_(W)(n). Then the closed-loop pitch analysis,which is performed in closed-loop pitch search module 107 on a subframebasis, is restricted around the open-loop pitch lag T_(OL) whichsignificantly reduces the search complexity of the LTP parameters T andb (pitch lag and pitch gain). Open-loop pitch analysis is usuallyperformed in module 106 once every 10 ms (two subframes) usingtechniques well known to those of ordinary skill in the art.

The target vector x for LTP (Long Term Prediction) analysis is firstcomputed. This is usually done by subtracting the zero-input response s₀of weighted synthesis filter W(z)/Â(z) from the weighted speech signals_(W)(n). This zero-input response s₀ is calculated by a zero-inputresponse calculator 108. More specifically, the target vector x iscalculated using the following relation:x=s _(w) −s ₀where x is the N-dimensional target vector, s_(W) is the weighted speechvector in the subframe, and s₀ is the zero-input response of filterW(z)/Â(z) which is the output of the combined filter W(z)/Â(z) due toits initial states. The zero-input response calculator 108 is responsiveto the quantized interpolated LP filter Â(z) from the LP analysis,quantization and interpolation calculator 104 and to the initial statesof the weighted synthesis filter W(z)/Â(z) stored in memory module 111to calculate the zero-input response s₀ (that part of the response dueto the initial states as determined by setting the inputs equal to zero)of filter W(z)/Â(z). This operation is well known to those of ordinaryskill in the art and, accordingly, will not be further described.

Of course, alternative but mathematically equivalent approaches can beused to compute the target vector x.

A N-dimensional impulse response vector h of the weighted synthesisfilter W(z)/Â(z) is computed in the impulse response generator 109 usingthe LP filter coefficients A(z) and Â(z) from module 104. Again, thisoperation is well known to those of ordinary skill in the art and,accordingly, will not be further described in the present specification.

The closed-loop pitch (or pitch codebook) parameters b, T and j arecomputed in the closed-loop pitch search module 107, which uses thetarget vector x, the impulse response vector h and the open-loop pitchlag T_(OL) as inputs. Traditionally, the pitch prediction has beenrepresented by a pitch filter having the following transfer function:1/(1−bz^(−T))where b is the pitch gain and T is the pitch delay or lag. In this case,the pitch contribution to the excitation signal u(n) is given bybu(n−T), where the total excitation is given byu(n)=bu(n−T)+gc _(k)(n)with g being the innovative codebook gain and c_(k)(n) the innovativecodevector at index k.

This representation has limitations if the pitch lag T is shorter thanthe subframe length N. In another representation, the pitch contributioncan be seen as a pitch codebook containing the past excitation signal.Generally, each vector in the pitch codebook is a shift-by-one versionof the previous vector (discarding one sample and adding a new sample).For pitch lags T>N, the pitch codebook is equivalent to the filterstructure (1/(1−bz^(−T)), and a pitch codebook vector v_(T)(n) at pitchlag T is given byv _(T)(n)=u(n−T), n=0, . . . , N−1.

For pitch lags T shorter than N, a vector v_(T)(n) is built by repeatingthe available samples from the past excitation until the vector iscompleted (this is not equivalent to the filter structure).

In recent encoders, a higher pitch resolution is used whichsignificantly improves the quality of voiced sound segments. This isachieved by oversampling the past excitation signal using polyphaseinterpolation filters. In this case, the vector v_(T)(n) usuallycorresponds to an interpolated version of the past excitation, withpitch lag T being a non-integer delay (e.g. 50.25).

The pitch search consists of finding the best pitch lag T and gain bthat minimize the mean squared weighted error E between the targetvector x and the scaled filtered past excitation. Error E beingexpressed as:E=∥x−by _(T)∥²where y_(T) Is the filtered pitch codebook vector at pitch lag T:

${{y_{T}(n)} = {{{v_{T}(n)}*{h(n)}} = {\sum\limits_{i = o}^{n}{{v_{T}(i)}{h\left( {n - i} \right)}}}}},{n = 0},\ldots\mspace{14mu},{N - 1.}$n=0, . . . , N−1.

It can be shown that the error E is minimized by maximizing the searchcriterion

$C = \frac{x^{t}y_{T}}{\sqrt{y_{T}^{t}y_{T}}}$where t denotes vector transpose.

In a preferred embodiment, a ⅓ subsample pitch resolution is used, andthe pitch (pitch codebook) search is composed of three stages.

In the first stage, an open-loop pitch lag T_(OL) is estimated inopen-loop pitch search module 106 in response to the weighted speechsignal s_(W)(n). As indicated in the foregoing description, thisopen-loop pitch analysis is usually performed once every 10 ms (twosubframes) using techniques well known to those of ordinary skill in theart.

In the second stage, the search criterion C is searched in theclosed-loop pitch search module 107 for integer pitch lags around theestimated open-loop pitch lag T_(OL) (usually ±5), which significantlysimplifies the search procedure. The following description proposes asimple procedure for updating the filtered codevector y_(T) without theneed to compute the convolution for every pitch lag.

Once an optimum integer pitch lag is found in the second stage, a thirdstage of the search (module 107) tests the fractions around that optimuminteger pitch lag.

When the pitch predictor is represented by a filter of the form1/(1−bz^(−T)), which is a valid assumption for pitch lags T>N, thespectrum of the pitch filter exhibits a harmonic structure over theentire frequency range, with a harmonic frequency related to 1/T. Incase of wideband signals, this structure is not very efficient since theharmonic structure in wideband signals does not cover the entireextended spectrum. The harmonic structure exists only up to a certainfrequency, depending on the speech segment. Thus, in order to achieveefficient representation of the pitch contribution in voiced segments ofwideband speech, the pitch prediction filter needs to have theflexibility of varying the amount of periodicity over the widebandspectrum.

An improved method capable of achieving efficient modeling of theharmonic structure of the speech spectrum of wideband signals isdisclosed in the present specification, whereby several forms of lowpass filters are applied to the past excitation and the low pass filterwith higher prediction gain is selected.

When subsample pitch resolution is used, the low pass filters can beincorporated into the interpolation filters used to obtain the higherpitch resolution. In this case, the third stage of the pitch search, inwhich the fractions around the chosen integer pitch lag are tested, isrepeated for the several interpolation filters having different low-passcharacteristics and the fraction and filter index which maximize thesearch criterion C are selected.

A simpler approach is to complete the search in the three stagesdescribed above to determine the optimum fractional pitch lag using onlyone interpolation filter with a certain frequency response, and selectthe optimum low-pass filter shape at the end by applying the differentpredetermined low-pass filters to the chosen pitch codebook vector v_(T)and select the low-pass filter which minimizes the pitch predictionerror. This approach is discussed in detail below.

FIG. 3 illustrates a schematic block diagram of a preferred embodimentof the proposed, latter approach.

In memory module 303, the past excitation signal u(n), n<0, is stored.The pitch codebook search module 301 is responsive to the target vectorx, to the open-loop pitch lag T_(OL) and to the past excitation signalu(n), n<0, from memory module 303 to conduct a pitch codebook (pitchcodebook) search minimizing the above-defined search criterion C. Fromthe result of the search conducted in module 301, module 302 generatesthe optimum pitch codebook vector v_(T). Note that since a sub-samplepitch resolution is used (fractional pitch), the past excitation signalu(n), n<0, is interpolated and the pitch codebook vector v_(T)corresponds to the interpolated past excitation signal. In thispreferred embodiment, the interpolation filter (in module 301, but notshown) has a low-pass filter characteristic removing the frequencycontents above 7000 Hz.

In a preferred embodiment, K filter characteristics are used; thesefilter characteristics could be low-pass or band-pass filtercharacteristics. Once the optimum codevector v_(T) is determined andsupplied by the pitch codevector generator 302, K filtered versions ofv_(T) are computed respectively using K different frequency shapingfilters such as 305 ^((j)), where j=1, 2, . . . , K. These filteredversions are denoted v_(f) ^((j)), where j=1, 2, . . . , K. Thedifferent vectors v_(f) ^((j)) are convolved in respective modules 304^((j)), where j=0, 1, 2, . . . , K, with the impulse response h toobtain the vectors y^((j)), where j=0, 1, 2, . . . , K. To calculate themean squared pitch prediction error for each vector y^((j)), the valuey^((j)) is multiplied by the gain b by means of a correspondingamplifier 307 ^((j)) and the value by^((j)) is subtracted from thetarget vector x by means of a corresponding subtractor 308 ^((j)).Selector 309 selects the frequency shaping filter 305 ^((j)) whichminimizes the mean squared pitch prediction errore ^((j)) =∥x−b ^((j)) y ^((j))∥², j=1, 2, . . . ,K

To calculate the mean squared pitch prediction error e^((j)) for eachvalue of y^((j)), the value y^((j)) is multiplied by the gain b by meansof a corresponding amplifier 307 ^((j)) and the value b^((j))y^((j)) issubtracted from the target vector x by means of subtractors 308 ^((j)).Each gain b^((j)) is calculated in a corresponging gain calculator 306^((j)) in association with the frequency shaping filter at index j,using the following relationship:b ^((j)) =x ^(t) y ^((j)) /∥y ^((j))∥².

In selector 309, the parameters b, T, and j are chosen based on v_(T) orv_(f) ^((j)) which minimizes the mean squared pitch prediction error e.

Referring back to FIG. 1, the pitch codebook index T is encoded andtransmitted to multiplexer 112. The pitch gain b is quantized andtransmitted to multiplexer 112. With this new approach, extrainformation is needed to encode the index j of the selected frequencyshaping filter in multiplexer 112. For example, if three filters areused (j=0, 1, 2, 3), then two bits are needed to represent thisinformation. The filter index information j can also be encoded jointlywith the pitch gain b.

Innovative Codebook:

Once the pitch, or LTP (Long Term Prediction) parameters b, T, and j aredetermined, the next step is to search for the optimum innovativeexcitation by means of search module 110 of FIG. 1. First, the targetvector x is updated by subtracting the LTP contribution:x ₂ =x−by _(T)where b is the pitch gain and y_(T) is the filtered pitch codebookvector (the past excitation at delay T filtered with the selected lowpass filter and convolved with the inpulse response h as described withreference to FIG. 3).

The search procedure in CELP is performed by finding the optimumexcitation codevector c_(k) and gain g which minimize the mean-squarederror between the target vector and the scaled filtered codevectorE=∥x ₂ −gHc _(k)∥²where H is a lower triangular convolution matrix derived from theimpulse response vector h.

It is worth noting that the used innovation codebook is a dynamiccodebook consisting of an algebraic codebook followed by an adaptiveprefilter F(z) which enhances special spectral components in order toimprove the synthesis speech quality, according to U.S. Pat. No.5,444,816. Different methods can be used to design this prefilter. Here,a design relevant to wideband signals is used whereby F(z) consists oftwo parts: a periodicity enhancement part 1/(1−0.85z^(−T)) and a tiltpart (1−β₁z⁻¹), where T is the integer part of the pitch lag and β₁ isrelated to the voicing of the previous subframe and is bounded by[0.0,0.5]. Note that prior to the codebook search, the impulse responseh(n) must include the prefilter F(z). That is,h(n)→h(n)+βh(n−T)

Preferably, the innovative codebook search is performed in module 110 bymeans of an algebraic codebook as described in U.S. Pat. No. 5,444,816(Adoul et al.) issued on Aug. 22, 1995; U.S. Pat. No. 5,699,482 grantedto Adoul et al., on Dec. 17, 1997; U.S. Pat. No. 5,754,976 granted toAdoul et al., on May 19, 1998; and U.S. Pat. No. 5,701,392 (Adoul etal.) dated Dec. 23, 1997.

There are many ways to design an algebraic codebook. In the presentlydescribed embodiment, the algebraic codebook is composed of codevectorshaving N_(p) non-zero-amplitude pulses (or non-zero pulses for short)p_(i).

Let us call m_(i) and β_(i) the position and amplitude of the i^(th)non-zero pulse, respectively. We will assume that the amplitude β_(i) isknown either because the i^(th) amplitude is fixed or because thereexists some method for selecting β_(i) prior to the codebook search. Thepreselection of the pulse amplitudes is performed according to themethod as described in the above mentioned U.S. Pat. No. 5,754,976.

Let us call “track i”, denoted T_(i) the set of positions p_(i) that thei^(th) non-zero pulse can occupy between 0 and N−1. Some typical sets oftracks are given below assuming N=64.

Several design examples have been introduced in U.S. Pat. No. 5,444,816and referred to as “Interleaved Single Pulse Permutations” (ISPP). Theseexamples were based on a codevector length of N=40 samples.

Here we give new design examples based on a codevector length of N=64and on an “Interleaved Single-Pulse Permutations” structure ISPP(64,4)given in Table 1.

TABLE 1 ISPP(64, 4) design. Track no Valid pulse positions in each track0 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60 1 1, 5, 9,13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61 2 2, 6, 10, 14, 18,22, 26, 30, 34, 38, 42, 46, 50, 54, 58, 62 3 3, 7, 11, 15, 19, 23, 27,31, 35, 39, 43, 47, 51, 55, 59, 63

In the ISPP(64,4) design, a set of 64 positions is partitioned in 4interleaved tracks of 60/4=16 valid positions each. Four bits arerequired to specify the 16=2⁴ valid positions of a given non-zero pulse.There are many ways to derive a codebook structure and this ISPP designto accommodate particular requirements in terms of number of pulses orcoding bits. Several codebooks can be designed based on this structureby varying the number of non-zero pulses that can be placed in eachtrack.

If a single signed non-zero pulse is placed in each track, the pulseposition is encoded with 4 bits and its sign (if we consider that eachnon-zero pulse can be either positive or negative) is encoded with 1bit. Therefore a total of 4×(4+1)=20 coding bits are required to specifypulse positions and signs for this particular algebraic codebookstructure.

If two signed non-zero pulses are placed in each track, the two pulsepositions are encoded with 8 bits and their corresponding signs can beencoded with only 1 bit by exploiting the pulse ordering (this will bedetailed later in the present specification). Therefore a total of4×(4+4+1)=36 coding bits are required to specify pulse positions andsigns for this particular algebraic codebook structure.

Other codebook structures can be designed by placing 3, 4, 5, or 6non-zero pulses in each track. Methods for efficiently coding the pulsepositions and signs in such structures will be disclosed later.

Further, other codebooks can be designed by placing unequal number ofnon-zero pulses in different tracks, or by ignoring certain tracks or byjoining certain tracks. For example, a codebook can be designed byplacing 3 non-zero pulses in tracks T₀ and T₂, and 2 non-zero pulses intracks T₁ and T₃ (13+9+13+9=42 bit codebook). Other codebooks can bedesigned by considering the union of tracks T₂ and T₃ and placingnon-zero pulses in tracks T₀, T₁, and T₂−T₃.

As can be seen a great variety of codebooks can be built around thegeneral theme of ISPP designs.

Efficient Coding of Pulse Positions and Signs (Codebook Indexing):

Here, several cases for placing from 1 to 6 signed non-zero pulses pertrack will be considered, and methods for efficiently jointly codingpulse positions and signs in a given track are disclosed.

First we will give examples of coding 1 non-zero pulse and 2 non-zeropulses per track. Coding 1 signed non-zero pulse per track isstraightforward and coding 2 signed non-zero pulses per track has beendescribed in the literature, in the EFR speech coding standard (GlobalSystem for Mobile Communications, GSM 06.60, “Digital cellulartelecommunications system; Enhanced Full Rate (EFR) speech transcoding,”European Telecommunication Standard Institute, 1996).

After having presented a method for encoding 2 signed non-zero pulses,methods for efficiently coding 3, 4, 5, and 6 signed non-zero pulses pertrack will be disclosed.

Coding 1 Signed Pulse per Track

In a track of length K, one signed non-zero pulse requires 1 bit for thesign and log₂(K) bits for the position. We will consider here thespecial case where K=2^(M), which means that M bits are needed to encodethe pulse position. Thus a total of M+1 bits are needed for one signednon-zero pulse in a track of length K=2^(M). In this preferredembodiment, the bit representing the sign (sign index) is set to 0 ifthe non-zero pulse is positive and to 1 if the non-zero pulse isnegative. Of course the inverse notation can also be used.

The position index of a pulse in a certain track is given by the pulseposition in the subframe divided (integer division) by the pulse spacingin the track. The track index is found by the remainder of this integerdivision. Taking the example ISPP(64,4) of Table 1, the subframe size is64 (0-63) and the pulse spacing is 4. A pulse at subframe position 25has a position index of 25 DIV 4=6 and track index of 25 MOD 4=1, whereDIV denotes integer division and MOD denotes the division remainder.Similarly, a pulse at subframe position of 40 has a position index 10and track index 0.

The index of one signed non-zero pulse with position index p and signindex s and in a track of length 2^(M) is given byI _(1p) =p+s×2^(M).

For the case of K=16 (M=4 bits), the 5-bit index of the signed pulse isrepresented in the table below:

Sign Position s b₃ b₂ b₁ b₀

The procedure code_1 pulse(p, s, M) shows how to encode a pulse at aposition index p and sign index s in a track of length 2^(M).

Procedure code_1pulse(p, s, M) Begin I_(1p)= p +s×2^(M) End

Procedure 1: Coding 1 signed non-zero pulse in a track of length K=2^(M)using M+1 bits.

Coding 2 Signed Pulses per Track

In case of two non-zero pulses per track of K=2^(M) potential positions,each pulse needs 1 bit for the sign and M bits for the position, whichgives a total of 2M+2 bits. However, some redundancy exists due to theunimportance of the pulse ordering. For example, placing the first pulseat position p and the second pulse at position q is equivalent toplacing the first pulse at position q and the second pulse at positionp. One bit can be saved by encoding only one sign and deducing thesecond sign from the ordering of the positions in the index. In thispreferred embodiment, the index is given byI _(2p) =p ₁ +p ₀×2^(M) +s×2^(2M)where s is the sign index of the non-zero pulse at position index p₀.

At the encoder, if the two signs are equal then the smaller position isset to p₀ and the larger position is set to p₁. On the other hand, ifthe two signs are not equal then the larger position is set to p₀ andthe smaller position is set to p₁.

At the decoder, the sign of the non-zero pulse at position p₀ is readilyavailable. The second sign is deduced from the pulse ordering. If theposition p₁ is smaller than position p₀ then the sign of the non-zeropulse at position p₁ is opposite to the sign of the non-zero pulse atposition p₀. If the position p₁ is larger than position p₀ then the signof the non-zero pulse at position p₁ is the same as the sign of thenon-zero pulse at position p₀.

In this preferred embodiment, the ordering of the bits in the index isshown below. s corresponds to the sign of non-zero pulse p₀.

Sign Position p₀ Position p₁ s b₃ b₃ b₂ b₀ b₃ b₂ b₁ b₀

The procedure for encoding two non-zero pulses with position indices p₀and p₁ and sign indices σ₀ and σ₁ is shown in FIG. 5. This is explainedfurther in Procedure 2 below.

Procedure code_2pulse([p₀ p₁], [σ₀ σ₁], M) Begin If σ₀ = σ₁ (501 inFigure 5) If p₀ ≦ p₁ (502) I_(2p) = p₁ + p₀×2^(M) + σ₀×2^(2M) (503–504)If p₀ ≧ p₁ (see 502) I_(2p) = p₀ + p₁×2^(M) + σ₀×2^(2M) (505–504) If σ₀≠ σ₁ (501 in Figure 5) If p₀ ≦ p₁ (506) I_(2p) = p₀ + p₁×2^(M) +σ₁×2^(2M) If p₀ ≧ p₁ (see 506) I_(2p) = p₁ + p₀×2^(M) + σ₀×2^(2M) End

Procedure 2: Coding 2 signed non-zero pulses in a track of lengthK=2^(M) using 2M+1 bits.

Coding 3 Signed Pulses per Track

In case of three non-zero pulses per track, similar logic can be used asthe case of two non-zero pulses. For a track with 2^(M) positions, 3M+1bits are needed instead of 3M+3 bits. A simple way of indexing thenon-zero pulses, which is disclosed in the present specification, is todivide the track positions in two halves (or sections) and identify ahalf that contains at least two non-zero pulses. The number of positionsin each section is K/2=2^(M)/2=2^(M−1), which can be represented withM−1 bits. The two non-zero pulses in the section containing at least twonon-zero pulses are encoded with the procedure code_2 pulse([p₀ p₁], [s₀s₁], M−1) which requires 2(M−1)+1 bits and the remaining pulse which canbe anywhere in the track (in either section) is encoded with theprocedure code_1 pulse(p, s, M) which requires M+1 bits. Finally, theindex of the section that contains the two non-zero pulses is encodedwith 1 bit. Thus the total number of required bits is2(M−1)+1+M+1+1=3M+1.

A simple way of checking if two non-zero pulses are positioned in thesame half of the track is done by checking whether the most significantbits (MSB) of their position indices are equal or not. This can besimply done by the Exclusive OR logical operation which gives 0 if theMSBs are equal and 1 if not. Note that MSB=0 means that the positionbelongs to the lower half of the track (0−(K/2−1)) and MSB=1 means itbelongs to the upper half (K/2−(K−1)). If the two non-zero pulses belongto the upper half, they need to be shifted to the range (0−(K/2−1))before encoding them using 2(M−1)+1 bits. This can be done by maskingthe M−1 least significant bits (LSB) with a mask consisting of M−1 ones(1's) (which corresponds to the number 2^(M−1)−1).

The procedure for encoding 3 pulses at position indices p₀, p₁, and p₂and sign indices σ₀, σ₁, and σ₂ is described in the procedure below.

Procedure code_3pulse([p₀ p₁ p₂], [σ₀ σ₁ σ₂], M) Begin If MSB(p₀) XORMSB(p₁) = 0 (if positions in the same half) p₀ = p₀ AND (2^(M−1) −1)(mask the M−1 LSBs) p₁ = p₁ AND (2^(M−1) −1) (mask the M−1 LSBs) I_(2p)= code_2pulse([p₀ p₁], [σ₀ σ₁], M−1) I_(1p) = code_1pulse(p₂, σ₂, M)I_(3p) = I_(2p) +MSB(p₀)×2^(2M−1)+ I_(1p)×2^(2M) Else If MSB(p₀) XORMSB(p₂) = 0 p₀ = p₀ AND (2^(M−1) −1) p₂ = p₂ AND (2^(M−1) −1) I_(2p) =code_2pulse([p₀ p₂], [σ₀ σ₂], M−1) I_(1p) = code_1pulse(p₁, σ₁, M)I_(3p) = I_(2p) +MSB(p₀)×2^(2M−1)+ I_(1p)×2^(2M) Else (if positions p₁and p₂ in the same half) p₁ = p₁ AND (2^(M−1) −1) p₂ = p₂ AND (2^(M−1)−1) I_(2p) = code_2pulse([p₁ p₂], [σ₁ σ₂], M−1) I_(1p) = code_1pulse(p₀,σ₀, M) I_(3p) = I_(2p) +MSB(p₁)×2^(2M−1)+ I_(1p)×2^(2M) End

Procedure 3: Coding 3 signed pulses in a track of length K=2^(M) using3M+1 bits.

The table below shows the distribution of the bits in the 13-bit indexaccording to this preferred embodiment for the case of M=4 (K=16).

Position of Section 2 pulses in section k Sign 3^(rd) pulse index s₀ p₀p₁ s b₃ b₃ b₂ b₀ k s b₂ b₁ b₀ b₂ b₁ b₀Coding 4 Signed Pulses per Track

The 4 signed non-zero pulses in a track of length K=2^(M) can be encodedusing 4M bits.

Similar to the case of 3 pulses, the K positions in the track aredivided into 2 sections (two halves) where each section contains K/2pulse positions. Here we denote the sections as Section A with positions0 to K/2−1 and Section B with positions K/2 to K−1. Each section cancontain from 0 to 4 non-zero pulses. The table below shows the 5 casesrepresenting the possible number of pulses in each sections:

Pulses in Pulses in Case Section A Section B Bits needed 0 0 4 4M-3 1 13 4M-2 2 2 2 4M-2 3 3 1 4M-2 4 4 0 4M-3

In cases 0 or 4, the 4 pulses in a section of length K/2=2^(M−1) can beencoded using 4(M−1)+1=4M−3 bits (this will be explained later on).

In cases 1 or 3, the 1 pulse in a section of length K/2=2^(M−1) can beencoded with M−1+1=M bits and the 3 pulses in the other section can beencoded with 3(M−1)+1=3M−2 bits. This gives a total of M+3M−2=4M−2 bits.

In case 2, the pulses in a section of length K/2=2^(M−1) can be encodedwith 2(M−1)+1=2M−1 bits. Thus for both sections, 2(2M−1)=4M−2 bits arerequired.

Now the case index can be encoded with 2 bits (4 possible cases)assuming cases 0 and 4 are combined. Then for cases 1, 2, or 3, thenumber of needed bits is 4M−2. This gives a total of 4M−2+2=4M bits. Forcases 0 or 4, 1 bit is needed for identifying either case, and 4M−3 bitsare needed for encoding the 4 pulses in the section. Adding the 2 bitsneeded for the general case, this gives a total of 1+4M−3+2=4M bits.

Thus, as can be seen from the description above, the 4 pulses can beencoded with a total of 4M bits.

The procedure of encoding 4 signed non-zero pulses in a track of lengthK=2^(M) using 4M bits is shown in Procedure 4 below.

The 4 tables below show the distribution of bits in the index for thedifferent cases described above according to the preferred embodimentwhere M=4 (K=16). Encoding 4 signed pulses per track requires 16 bits inthis case.

Cases 0 or 4

Global case Case 0 or 4 4 pulse in Section A or B 2 1 13

Cases 1

Global case 1 pulse in Section A 3 pulses in Section B 2 1 + 3 = 4 1 +3 + 1 + 1 + 2 + 2 = 10

Cases 2

Global case 2 pulses in Section A 2 pulses in Section B 2 1 + 3 + 3 = 71 + 3 + 3 = 7

Cases 3

Global case 3 pulses in Section A 1 pulse in Section B 2 1 + 3 + 1 + 1 +2 + 2 = 10 1 + 3 = 4Procedure code_4pulse([p₀ p₁ p₂ p₃], [σ₀ σ₁ σ₂ σ₃], M)Begin

Find N_(A) (number of pulses in Section A) and N_(B) (number of pulsesin Section B)

If N_(A)= 0 and N_(B)= 4 I_(4p) _(—B) = code_4pulse_Section([p₀ p₁ p₂p₃], [σ₀ σ₁ σ₂ σ₃], M−1) k = 1 (bit identifying the section containing 4pulses) I_(AB) = I_(4p) _(—B) + k×2^(4M−3) (total of 4M−2 bits) IfN_(A)= 1 and N_(B)= 3 I_(1p) _(—A) = code_1pulse(p, σ, M−1) (M bits)I_(3p) _(—B) = code_3pulse ([p₀ p₁ p₂], [σ₀ σ₁ σ₂], M−1) (3(M−1)+1 bits)I_(AB) = I_(3p) _(—B) + I_(1p) _(—A) ×2^(3(M−1)+1) (total of 4M−2 bits)If N_(A)= 2 and N_(B)= 2 I_(2p) _(—A) = code_2pulse([p₀ p₁], [σ₀σ₁],M−1) (2(M−1)+1 bits) I_(2p) _(—B) = code_2pulse ([p₂ p₃], [σ₂ σ₃],M−1) (2(M−1)+1 bits) I_(AB) = I_(2p) _(—B) + I_(2p) _(—A) ×2^(2(M−1)+1)(total of 4M−2 bits) If N_(A)= 3 and N_(B)= 1 I_(1p) _(—B) =code_1pulse(p, σ, M−1) (M bits) I_(3p) _(—A) = code_3pulse ([p₀ p₁ p₂],[σ₀ σ₁ σ₂], M−1) (3(M−1)+1 bits) I_(AB) = I_(1p) _(—B) + I_(3p) _(—A)×2^(M) (total of 4M−2 bits) If N_(A)= 4 and N_(B)= 0 I_(4p) _(—A) =code_4pulse_Section([p₀ p₁ p₂ p₃], [σ₀ σ₁ σ₂ σ₃], M−1) k = 0 (bitidentifying the section containing 4 pulses) I_(AB) = I_(4p) _(—A) +k×2^(4M−3) (total of 4M−2 bits) Case = N_(A) If N_(A)= 4 case = 0 (joincases 0 and 4 such that 2 bits are needed for “case”) I_(4p) = I_(AB) +case×2^(4M−2) (total of 4M bits)

Procedure 4: Coding 4 signed non-zero pulses in a track of lengthK=2^(M) using 4M bits.

Note that for the cases 0 or 1, where the 4 non-zero pulses are in thesame section, 4(M−1)+1=4M−3 bits are needed. This is done using a simplemethod for encoding 4 non-zero pulses in a Section of length K/2=2^(M−1)bits. This is done by further dividing the section into 2 subsections oflength K/4=2^(M−2); identifying a subsection that contains at least 2non-zero pulses; coding the 2 non-zero pulses in that subsection using2(M−2)+1=2M−3 bits; coding the index of the subsection that contains atleast 2 non-zero pulses using 1 bit; and coding the remaining 2 non-zeropulses, assuming that they can be anywhere in the section, using2(M−1)+1=2M−1 bits. This gives a total of (2M−3)+(1)+(2M−1)=4M−3 bits.

Encoding 4 signed non-zero pulses in a Section of length K/2=2^(M−1)using 4M−3 bits is shown in Procedure 4_Section.

Procedure code_4pulse_Section([p₀ p₁ p₂ p₃], [σ₀ σ₁ σ₃], M−1)

Begin

If MSB(p₀) XOR MSB(p₁) = 0 (if positions in the same subsection) p₀ = p₀AND (2^(M−2) −1) (mask the M−2 LSBs) p₁ = p₁ AND (2^(M−2) −1) (mask theM−2 LSBs) I_(2p) _(—subsec) = code_2pulse([p₀ p₁], [σ₀ σ₁], M−2) (2M−3bits) I_(2p) _(—sec) = code_2pulse([p₂ p₃], [σ₂ σ₃], M−1) (2M−1 bits)I_(4p) _(—sec) = I_(2p) _(—subsec) +MSB(p₀)×2^(2M−3)+ I_(2p) _(—sec)×2^(2(M−1)) Else If MSB(p₀) XOR MSB(p₂) = 0 p₀ = p₀ AND (2^(M−2) −1) p₂= p₂ AND (2^(M−2) −1) I_(2p) _(—subsec) = code_2pulse([p₀ p₂], [σ₀ σ₂],M−2) (2M−3 bits) I_(2p) _(—sec) = code_2pulse([p₁ p₃], [σ₁ σ₃], M−1)(2M−1 bits) I_(4p) _(—sec) = I_(2p) _(—subsec) +MSB(p₀)×2^(2M−3)+ I_(2p)_(—sec) ×2^(2(M−1)) Else p₁ = p₁ AND (2^(M−2) −1) p₂ = p₂ AND (2^(M−2)−1) I_(2p) _(—subsec) = code_2pulse([p₁ p₂], [σ₁ σ₂], M−2) (2M−3 bits)I_(2p) _(—sec) = code_2pulse([p₀ p₃], [σ₀ σ₃], M−1) (2M−1 bits) I_(4p)_(—sec) = I_(2p) _(—subsec) +MSB(p₁)×2^(2M−3)+ I_(2p) _(—sec)×2^(2(M−1)) End

Procedure 4_Section: Coding 4 Signed Pulses in a Section of LengthK/2=2^(M−1) using 4M−3 bits.

Coding 5 Signed Pulses per Track

The 5 signed non-zero pulses in a track of length K=2^(M) can be encodedusing 5M bits.

Similar to the case of 4 non-zero pulses, the K positions in the trackare divided into 2 sections (two halves) where each section contains K/2positions. Here we denote the sections as Section A with positions 0 toK/2−1 and Section B with positions K/2 to K−1. Each section can containfrom 0 to 5 pulses. The table below shows the 6 cases representing thepossible number of pulses in each sections:

Pulses in Pulses in Case Section A Section B Bits needed 0 0 5 5M-1 1 14 5M-1 2 2 3 5M-1 3 3 2 5M-1 4 4 1 5M-1 5 5 0 5M-1

In case 0, 1, and 2, there are at least 3 non-zero pulses in Section B.On the other hand, in cases 3, 4, and 5, there are at least 3 pulses inSection A. Thus, a simple approach to encode the 5 non-zero pulses is toencode the 3 non-zero pulses in the same section using Procedure 3 whichrequires 3(M−1)+1=3M−2 bits, and to encode the remaining 2 pulses usingProcedure 2 which requires 2M+1 bits. This gives M−1 bits. An extra bitsis needed to identify the section that contains at least 3 non-zeropulses (cases (0,1,2) or cases (3,4,5)). Thus a total of 5M bits areneeded to encode the 5 signed non-zero pulses.

The procedure of encoding 5 signed pulses in a track of length K=2Musing 5M bits is shown in Procedure 5 below.

The 2 tables below show the distribution of bits in the index for thedifferent cases described above according to the preferred embodimentwhere M=4 (K=16). Encoding 5 signed non-zero pulses per track requires20 bits in this case.

Cases 0, 1, and 2

Section Minimum 3 pulses in Other 2 pulses identifier Section B in thetrack 1 1 + 3 + 1 + 1 + 2 + 2 = 10 1 + 4 + 4 = 9

Cases 3, 4, and 5

Section Minimum 3 pulses in Other 2 pulses identifier Section A in thetrack 1 1 + 3 + 1 + 1 + 2 + 2 = 10 1 + 4 + 4 = 9Procedure code_5pulse([p₀ p₁ p₂ p₃], [σ₀ σ₁ σ₂ σ₃ σ₄], M)Begin

Find N_(A) (number of pulses in Section A) and N_(B) (number of pulsesin Section B)

If N_(A)= 0 and N_(B)= 5 I_(3p) = code_3pulse ([p_(B0) p_(B1) p_(B2)],[σ_(B0) σ_(B1) σ_(B2)], M−1) (3(M−1)+1 bits) I_(2p) =code_2pulse([p_(B3) p_(B4)], [σ_(B3) σ_(B4)], M) (2M+1 bits) If N_(A)= 1and N_(B)= 4 I_(3p) = code_3pulse ([p_(B0) p_(B1) p_(B2)], [σ_(B0)σ_(B1) σ_(B2)], M−1) (3(M−1)+1 bits) I_(2p) = code_2pulse([p_(B3)p_(A0)], [σ_(B3) σ_(A0)], M) (2M+1 bits) If N_(A)= 2 and N_(B)= 3 I_(3p)= code_3pulse ([p_(B0) p_(B1) p_(B2)], [σ_(B0) σ_(B1) σ_(B2)], M−1)(3(M−1)+1 bits) I_(2p) = code_2pulse([p_(A0) p_(A1)], [σ_(A0) σ_(A1)],M) (2M+1 bits) If N_(A)= 3 and N_(B)= 2 I_(3p) = code_3pulse ([p_(A0)p_(A1) p_(A2)], [σ_(A0) σ_(A1) σ_(A2)], M−1) (3(M−1)+1 bits) I_(2p) =code_2pulse([p_(B0) p_(B1)], [σ_(B0) σ_(B1)], M) (2M+1 bits) If N_(A)= 4and N_(B)= 1 I_(3p) = code_3pulse ([p_(A0) p_(A1) p_(A2)], [σ_(A0)σ_(A1) σ_(A2)], M−1) (3(M−1)+1 bits) I_(2p) = code_2pulse([p_(A3)p_(B0)], [σ_(A3) σ_(B0)], M) (2M+1 bits) If N_(A)= 5 and N_(B)= 0 I_(3p)= code_3pulse ([p_(A0) p_(A1) p_(A2)], [σ_(A0) σ_(A1) σ_(A2)], M−1)(3(M−1)+1 bits) I_(2p) = code_2pulse([p_(A3) p_(A4)], [σ_(A3) σ_(A4)],M) (2M+1 bits) If N_(A) < 3 k = 1 else k=0 (identify section withminimum of 3 pulses) I_(5p) = I_(2p) + I_(3p)×2^(2M) + k×2^(5M−1) (total of 5M bits)

Procedure 5: Coding 5 signed pulses in a track of length K=2^(M) using5M bits.

Coding 6 Signed Pulses per Track

The 6 signed pulses in a track of length K=2^(M) are encoded in thispreferred embodiment using 6M−2 bits.

Similar to the case of 5 pulses, the K positions in the track aredivided into 2 sections (two halves) where each section contains K/2positions. Here we denote the sections as Section A with positions 0 toK/2−1 and Section B with positions K/2 to K−1. Each section can containfrom 0 to 6 pulses. The table below shows the 7 cases representing thepossible number of pulses in each sections:

Pulses in Pulses in Case Section A Section B Bits needed 0 0 6 6M-5 1 15 6M-5 2 2 4 6M-5 3 3 3 6M-4 4 4 2 6M-5 5 5 1 6M-5 6 6 0 6M-5

Note that cases 0 and 6 are similar except that the 6 non-zero pulsesare in different sections. Similarly, the difference between cases 1 and5 as well as cases 2 and 4 is the section that contains more pulses.Therefore these cases can be coupled and an extra bit can be assigned toidentify the section that contains more pulses. Since these casesinitially need 6M−5 bits, the coupled cases need 6M−4 bits taking intoaccount the Section bit.

Thus, we have now 4 states of coupled cases, with 2 extra bits neededfor the state. This gives a total of 6M−4+2=6M−2 bits for the 6 signednon-zero pulses. The coupled cases are shown in the table below.

Coupled Pulses in Pulses in Bits cases Section A or B other Sectionneeded 0, 6 0 6 6M-4 1, 5 1 5 6M-4 2, 4 2 4 6M-4 3 3 3 6M-4

In cases 0 or 6, 1 bit is needed to identify the section which contains6 non-zero pulses. 5 non-zero pulses in that section are encoded usingProcedure 5 which needs 5(M−1) bits (since the pulses are confined tothat section), and the remaining pulse is encoded using Procedure 1,which requires 1+(M−1) bits. Thus a total of 1+5(M−1)+M=6M−4 bits areneeded for this coupled cases. Extra 2 bits are needed to encode thestate of the coupled case, giving a total of 6M−2 bits.

In cases 1 or 5, 1 bit is needed to identify the section which contains5 pulses. The 5 pulses in that section are encoded using Procedure 5which needs 5(M−1) bits and the pulse in the other section is encodedusing Procedure 1, which requires 1+(M−1) bits. Thus a total of1+5(M−1)+M=6M−4 bits are needed for these coupled cases. Extra 2 bitsare needed to encode the state of the coupled cases, giving a total of6M−2 bits.

In cases 2 or 4, 1 bit is needed to identify the section which contains4 non-zero pulses. The 4 pulses in that section are encoded usingProcedure 4 which needs 4(M−1) bits and the 2 pulses in the othersection are encoded using Procedure 2, which requires 1+2(M−1) bits.Thus a total of 1+4(M−1)+1+2(M−1)=6M−4 bits are needed for these coupledcases. Extra 2 bits are needed to encode the state of the case, giving atotal of 6M−2 bits.

In case 3, the 3 non-zero pulses in each section are encoded usingProcedure 3 which requires 3(M−1)+1 bits in each Section. This gives6M−4 bits for both sections. Extra 2 bits are needed to encode the stateof the case, giving a total of 6M−2 bits.

The procedure of encoding 6 signed non-zero pulses in a track of lengthK=2^(M) using 6M−2 bits is shown in Procedure 6 below.

The 2 tables below show the distribution of bits in the index for thedifferent cases described above according to the preferred embodimentwhere M=4 (K=16). Encoding 6 signed non-zero pulses per track requires22 bits in this case.

Cases 0 and 6

Coupled 6-pulse Section 5 pulses in Other pulse in case state identifierthe section the section 2 1 5(4 − 1) = 15 1 + 3 = 4

Cases 1 and 5

Coupled 5-pulse Section 5 pulses in Other pulse in case state identifierthe Section the other section 2 1 5(4 − 1) = 15 1 + 3 = 4

Cases 2 and 4

Coupled 4-pulse Section 4 pulses in Other two pulse in case stateidentifier the Section the other section 2 1 4(4 − 1) = 12 1 + 3 + 3 = 7

Case 3

Coupled 3 pulses in 3 pulse in case state Section A Section B 2 3(4− 1) + 1 = 10 3(4 − 1) + 1 = 10Procedure code_6pulse([p₀ p₁ p₂ p₃ p₄ p₅], [σ₀ σ₁ σ₂ σ₃ σ₄ σ₅], M)Begin

Find N_(A) (number of pulses in Section A) and N_(B) (number of pulsesin Section B)

If N_(A)= 0 and N_(B)= 6 I_(5p) = code_5pulse ([p_(B0) p_(B1) p_(B2)p_(B3) p_(B4)], [σ_(B0) σ_(B1) σ_(B2) σ_(B3) σ_(B4)], M−1) I_(1p) =code_1pulse(p_(B5), σ_(B5), M−1) (M bits) I_(AB) = I_(1p) +I_(5p)×2^(M)+ 1×2^(6M−5) (M + (5M−5) + 1 bits) If N_(A)= 1 and N_(B)= 5I_(5p) = code_5pulse ([p_(B0) p_(B1) p_(B2) p_(B3) p_(B4)], [σ_(B0)σ_(B1) σ_(B2) σ_(B3) σ_(B4)], M−1) I_(1p) = code_1pulse(p_(A0), σ_(A0),M−1) (M bits) I_(AB) = I_(1p) + I_(5p)×2^(M)+ 1×2^(6M−5) (M + (5M−5) + 1bits) If N_(A)= 2 and N_(B)= 4 I_(4p) = code_4pulse ([p_(B0) p_(B1)p_(B2) p_(B3)], [σ_(B0) σ_(B1) σ_(B2) σ_(B3)], M−1) (4(M−1) bits) I_(2p)= code_2pulse([p_(A0) p_(A1)], [σ_(A0) σ_(A1)], M−1) (2(M−1)+1 bits)I_(AB) = I_(2p) + I_(4p)×2^(2(M−1)+1) + 1×2^(6M−5) ((2M−1) + (4M−4) + 1bits) If N_(A)= 3 and N_(B)= 3 I_(3pA) = code_3pulse ([p_(A0) p_(A1)p_(A2)], [σ_(A0) σ_(A1) σ_(A2)], M−1) (3(M−1)+1 bits) I_(2pB) =code_3pulse ([p_(B0) p_(B1) p_(B2)], [σ_(B0) σ_(B1) σ_(B2)], M−1)(3(M−1)+1 bits) I_(AB) = I_(3pB) + I_(3pA)×2^(3(M−1)+1) (3(M−1)+1 +3(M−1)+1 bits) If N_(A)= 4 and N_(B)= 2 I_(4p) = code_4pulse ([p_(A0)p_(A1) p_(A2) p_(A3)], [σ_(A0) σ_(A1) σ_(A2) σ_(A3)], M−1) (4(M−1) bits)I_(2p) = code_2pulse([p_(B0) p_(B1)], [σ_(B0) σ_(B1)], M−1) (2(M−1)+1bits) I_(AB) = I_(2p) + I_(4p)×2^(2(M−1) +1)+ 0×2^(6M−5) ((2M−1) +(4M−4) + 1 bits) If N_(A)= 5 and N_(B)= 1 I_(5p) = code_5pulse ([p_(A0)p_(A1) p_(A2) p_(A3) p_(A4)], [σ_(A0) σ_(A1) σ_(A2) σ_(A3) σ_(A4)], M−1)I_(1p) = code_1pulse(p_(B0), σ_(B0), M−1) (M bits) I_(AB) = I_(1p) +I_(5p)×2^(M)+ 0×2^(6M−5)  (M + (5M−5) + 1 bits) If N_(A)= 6 and N_(B)= 0I_(5p) = code_5pulse ([p_(A0) p_(A1) p_(A2) p_(A3) p_(A4)], [σ_(A0)σ_(A1) σ_(A2) σ_(A3) σ_(A4)], M−1) I_(1p) = code_1pulse(p_(A5), σ_(A5),M−1) (M bits) I_(AB) = I_(1p) + I_(5p)×2^(M) + 0×2^(6M−5) (M + (5M−5) +1 bits) If N_(A) < 4 k = N_(A) else k= 6−N_(A) (find 4 states of coupledcases) I_(6p) = I_(AB) + k×2^(6M−4) (total of 6M−2 bits) End

Procedure 6: Coding 6 signed pulses in a track of length K=2^(M) using6M−2 bits.

Examples of Codebook Structures Based on ISPP(64.4)

Here, different codebook design examples are presented based onISPP(64,4) design explained above. The track size is K=16 requiring M=4bits per track. The different design examples are obtained by changingthe number of non-zero pulses per track. 8 possible designs aredescribed below. Other codebooks structures can be easily obtained bychoosing different combinations of non-zero pulses per track.

Design 1: 1 Pulse per Track (20 Bit Codebook)

In this example, each non-zero pulse requires (4+1) bits (Procedure 1)giving a total of 20 bits for the 4 pulses in the 4 tracks.

Design 2: 2 Pulses per Track (36 Bit Codebook)

In this example, the two non-zero pulses in each track require (4+4+1)=9bits (Procedure 2) giving a total of 36 bits for the 8 non-zero pulsesin the 4 tracks.

Design 3: 3 Pulses per Track (52 Bit Codebook)

In this example, the 3 non-zero pulses in each track require (3×4+1)=13bits (Procedure 3) giving a total of 52 bits for the 12 non-zero pulsesin the 4 tracks.

Design 4: 4 Pulses per Track (64 Bit Codebook)

In this example, the 4 non-zero pulses in each track require (4×4)=16bits (Procedure 4) giving a total of 64 bits for the 16 pulses in the 4tracks.

Design 5: 5 Pulse per Track (80 Bit Codebook)

In this example, the 5 non-zero pulses in each track require (5×4)=20bits (Procedure 5) giving a total of 80 bits for the 20 non-zero pulsesin the 4 tracks.

Design 6: 6 Pulse per Track (88 Bit Codebook)

In this example, the 6 non-zero pulses in each track require (6×4−2)=22bits (Procedure 6) giving a total of 88 bits for the 24 non-zero pulsesin the 4 tracks.

Design 7: 3 Pulses in Tracks T₁ and T₂ and 2 Pulses in Tracks T₁ and T₃(44 Bit Codebook)

In this example, the 3 non-zero pulses tracks T₀ and T₂ require(3×4+1)=13 bits (Procedure 3) per track and the 2 non-zero pulses intracks T₁ and T₃ require (1+4+4)=9 bits (Procedure 2) per track. Thisgives a total of (13+9+13+9)=44 bits for the 10 non-zero pulses in the 4tracks.

Design 8: 5 Pulses in Tracks T₀ and T₂ and 4 Pulses in Tracks T₁ and T₃(72 Bit Codebook)

In this example, the 5 non-zero pulses tracks T₀ and T₂ require (5×4)=20bits (Procedure 5) per track and the 4 pulses in tracks T₁ and T₃require (4×4)=16 bits (Procedure 4) per track. This give a total of(20+16+20+16)=72 bits for the 18 non-zero pulses in the 4 tracks.

Codebook Search:

In this preferred embodiment, a special method for performingdepth-first search, described in U.S. Pat. No. 5,701,392, is usedwhereby the memory requirements for storing the elements of the matrixH^(t)H (which will be defined hereinafter) are significantly reduced.This matrix contains the autocorreltions of the impulse response h(n)and it is needed for performing the search procedure. In this preferredembodiment, only a part of this matrix is computed and stored and theother part is computed online within the search procedure.

The algebraic codebook is searched by finding the optimum excitationcodevector c_(k) and gain g which minimize the mean-squared errorbetween the target vector and the scaled filtered codevectorE=∥x ₂ −gHc _(k)∥²where H is a lower triangular convolution matrix derived from theimpulse response vector h. The matrix H is defined as the lowertriangular Toeplitz convolution matrix with diagonal h(0) and lowerdiagonals h(1), . . . , h(N−1).

It can be shown that the mean-squared weighted error E can be minimizedby maximizing the search criterion

$Q_{k} = {\frac{\left( {x_{2}^{t}{Hc}_{k}} \right)^{2}}{c_{k}^{t}H^{t}{Hc}_{k}} = {\frac{\left( {d^{t}c_{k}} \right)^{2}}{c_{k}^{t}\Phi\; c_{k}} = {\frac{\left( R_{k} \right)^{2}}{E_{k}}.}}}$where d=H^(t)x₂ is the correlation between the target signal x₂(n) andthe impulse response h(n) (also known as the backward filtered targetvector), and ΦH^(t)H is the matrix of correlations of h(n).

The elements of the vector d are computed by

${{d(n)} = {\sum\limits_{i = n}^{N - 1}{{x_{2}(i)}{h\left( {i - n} \right)}}}},{n = 0},{{\ldots\mspace{14mu} N} - 1},$and the elements of the symmetric matrix Φ are computed by

${{\phi\left( {i,j} \right)} = {\sum\limits_{n = j}^{N - 1}{{h\left( {n - i} \right)}{h\left( {n - j} \right)}}}},{i = 0},\ldots\mspace{14mu},{N - 1},{j = i},\ldots\mspace{14mu},{N - 1.}$

The vector d and the matrix Φ can be computed prior to the codebooksearch.

The algebraic structure of the codebooks allows for very fast searchprocedures since the innovation vector c_(k) contains only a fewnon-zero pulses. The correlation in the numerator of the searchcriterion Q_(k) is given by

$R = {\sum\limits_{i = 0}^{N_{p} - 1}{\beta_{i}{d\left( m_{i} \right)}}}$where m_(i) is the position of the ith pulse, β_(i) is its amplitude,and N_(p) is the number of pulses. The energy in the denominator of thesearch criterion Q_(k) is given by

$E = {{\sum\limits_{i = 0}^{N_{p} - 1}{\phi\left( {m_{i},m_{i}} \right)}} + {2{\sum\limits_{i = 0}^{N_{p} - 2}{\sum\limits_{j = {i + 1}}^{N_{p} - 1}{\beta_{i}\beta_{j}{\phi\left( {m_{i},m_{j}} \right)}}}}}}$

To simplify the search procedure, the pulse amplitudes are predeterminedby quantizing a certain reference signal b(n). Several methods can beused to define this reference signal. In this preferred embodiment, b(n)is given by

${b(n)} = {{\sqrt{\frac{E_{d}}{E_{r}}}{r_{LTP}(n)}} + {\alpha\;{d(n)}}}$where E_(d)=d^(t)d is the energy of the signal d(n) and E_(r)=r_(LTP)^(t)r_(LTP) is the energy of the signal r_(LTP)(n) which is the residualsignal after long term prediction. The scaling factor α controls theamount of dependence of the reference signal on d(n).

In the signal-selected pulse amplitude approach disclosed in U.S. Pat.No. 5,754,976 the sign of a pulse at position i is set equal to the signof the reference signal at that position. To simplify the search thesignal d(n) and matrix Φ are modified to incorporate the pre-selectedsigns.

Let s_(b)(n) denote the vector containing the signs of b(n). Themodified signal d′(n) is given byd′(n)=s _(b)(n)d(n), n=0, . . . , N−1and the modified autocorrelation matrix Φ′ is given byφ′(i, j)=s _(b)(i)s _(b)(j)φ(i, j), i=0, . . . , N−1; j=i, . . . , N−1.

The correlation at the numerator of the search criterion Q_(k) is nowgiven by

$R = {\sum\limits_{i = 0}^{N_{p} - 1}{d^{\prime}(i)}}$and the energy at the denominator of the search criterion Q_(k) is givenby

$E = {{\sum\limits_{i = 0}^{N_{p} - 1}{\phi^{\prime}\left( {m_{i},m_{i}} \right)}} + {2\;{\sum\limits_{i = 0}^{N_{p} - 2}{\sum\limits_{j = {i + 1}}^{N_{p} - 1}{\phi^{\prime}\left( {m_{i},m_{j}} \right)}}}}}$

The goal of the search now is to determine the codevector with the bestset of N_(p) pulse positions assuming amplitudes of the pulses have beenselected as described above. The basic selection criterion is themaximization of the above mentioned ratio Q_(k).

According to U.S. Pat. No. 5,701,392, in order to reduce the searchcomplexity, the pulse positions are determined N_(m) pulses at a time.More precisely, the N_(p) available pulses are partitioned into Mnon-empty subsets of N_(m) pulses respectively such that N₁+N₂ . . .+N_(m) . . . +N_(M)=N_(p). A particular choice of positions for thefirst J=N₁+N₂ . . . +N_(m−1) pulses considered is called a level-m pathor a path of length J. A basic criterion for a path of J pulse positionsis the ratio Q_(k)(J), when only the J relevant pulses are considered.

The search begins with subset #1 and proceeds with subsequent subsetsaccording to a tree structure whereby subset m is searched at the m^(th)level of the tree.

The purpose of the search at level 1 is to consider the N₁ pulses ofsubset #1 and their valid positions in order to determine one, or anumber of, candidate path(s) of length N₁ which are the tree nodes atlevel 1.

The path at each terminating node of level m−1 is extended to lengthN₁+N₂ . . . +N_(m) at level m by considering N_(m) new pulses and theirvalid positions. One, or a number of, candidate extended path(s) aredetermined to constitute level-m nodes.

The best codevector corresponds to that path of length N_(p) whichmaximizes a given criterion, for example criterion Q_(k)(N_(p)) withrespect to all level-M nodes.

In this preferred embodiment, 2 pulses are always considered at a timein the search procedure, that is, N_(m)=2. However, instead of assumingthat the matrix Φ is precomputed and stored, which requires a memory ofN×N words (64×64=4 k words in this preferred embodiment), amemory-efficient approach is used which significantly reduces the memoryrequirement. In this new approach, the search procedure is performed insuch a way that only a part of the needed elements of the correlationmatrix are precomputed and stored. This part is related to thecorrelations of the impulse response corresponding to potential pulsepositions in consecutive tracks, as well as the correlationscorresponding to φ(j,j), j=0, . . . ,N−1 (that is the elements of themain diagonal of matrix Φ).

As an example of memory saving, in this preferred embodiment, thesubframe size is N=64, which means that the correlation matrix is ofsize 64×64=4096. Since the pulses are searched two pulses at time inconsecutive tracks, namely tracks T₀-T₁, T₁-T₂, T₂-T₃, or T₃-T₀, thecorrelation elements needed are those corresponding to pulses inadjacent tracks. Since each tracks contains 16 potential positions,there exists 16×16=256 correlation elements corresponding to twoadjacent tracks. Thus, with the memory-efficient approach, the elementsneeded are 4×256=1024 for the four possibilities of adjacent tracks(T₀-T₁, T₁-T₂, T₂-T₃, and T₃-T₀). In addition, 64 correlations in thediagonal of the matrix are needed. Giving a storage requirement of 1088instead of 4096 words.

A special form of the depth-first tree search procedure is used in thispreferred embodiment, in which two pulses in two consecutive tracks aresearched at a time. In order to reduce complexity, a limited number ofpotential positions of the first pulse are tested. Further, foralgebraic codebooks with a large number of pulses, some pulses in thehigher levels of the search tree can be fixed.

In order to guess intelligently which potential pulse positions areconsidered for the first pulse or in order to fix some pulse positions,a “pulse-position likelihood-estimate vector” b is used, which is basedon speech-related signals. The p^(th) component b(p) of this estimatevector b characterizes the probability of a pulse occupying position p(p=0, 1, . . . N−1) in the best codevector we are searching for.

For a given track, the estimate vector b indicates the relativeprobability of each valid position. This property can be usedadvantageously as a selection criterion in the first few levels of thetree structure in place of the basic selection criterion Q_(k)(j) whichanyhow, in the first few levels operates on too few pulses to providereliable performance in selecting valid positions.

In this preferred embodiment, the estimate vector b is the samereference signal used in pre-selecting the pulse amplitudes describedabove. That is,

${b(n)} = {{\sqrt{\frac{E_{d}}{E_{r}}}{r_{LTP}(n)}} + {\alpha\;{d(n)}}}$where E_(d)=d^(t)d is the energy of the signal d(n) and E_(r)=r_(LTP)^(t)r_(LTP) is the energy of the signal r_(LTP)(n) which is the residualsignal after long term prediction.

Once the optimum excitation codevector c_(k) and its gain g are chosenby module 110, the codebook index k and gain g are encoded andtransmitted to multiplexer 112.

Referring to FIG. 1, the parameters b, T, j, Â(z), k and g aremultiplexed through the multiplexer 112 before being transmitted througha communication channel.

Memory Update:

In memory module 111 (FIG. 1), the states of the weighted synthesisfilter W(z)/Â(z) are updated by filtering the excitation signalu=gc_(k)+bv_(T) through the weighted synthesis filter. After thisfiltering, the states of the filter are memorized and used in the nextsubframe as initial states for computing the zero-input response incalculator module 108.

As in the case of the target vector x, other alternative butmathematically equivalent approaches well known to those of ordinaryskill in the art can be used to update the filter states.

Decoder Side

The speech decoding device 200 of FIG. 2 illustrates the various stepscarried out between the digital input 222 (input stream to thedemultiplexer 217) and the output sampled speech 223 (s_(out) from theadder 221).

Demultiplexer 217 extracts the synthesis model parameters from thebinary information received from a digital input channel. From eachreceived binary frame, the extracted parameters are:

-   -   the short-term prediction parameters (STP) Â(z) on line 225        (once per frame);    -   the long-term prediction (LTP) parameters T, b, and j (for each        subframe); and    -   the innovation codebook index k and gain g (for each subframe).

The current speech signal is synthesized based on these parameters aswill be explained hereinbelow.

The innovative codebook 218 is responsive to the index k to produce theinnovation codevector c_(k), which is scaled by the decoded gain gthrough an amplifier 224. In the preferred embodiment, an innovativecodebook 218 as described in the above mentioned U.S. Pat. Nos.5,444,816; 5,699,482; 5,754,976; and 5,701,392 is used to represent theinnovative codevector c_(k).

The generated scaled codevector gc_(k) at the output of the amplifier224 is processed through an innovation filter 205.

Periodicity Enhancement:

The generated scaled codevector gc_(k) at the output of the amplifier224 is also processed through a frequency-dependent pitch enhancer,namely the innovation filter 205.

Enhancing the periodicity of the excitation signal u improves thequality in case of voiced segments. This was done in the past byfiltering the innovation vector from the innovative codebook (fixedcodebook) 218 through a filter in the form 1/(1−εbz^(−T)) where ε is afactor below 0.5 which controls the amount of introduced periodicity.This approach is less efficient in case of wideband signals since itintroduces periodicity over the entire spectrum. A new alternativeapproach, which is part of the present invention, is disclosed wherebyperiodicity enhancement is achieved by filtering the innovativecodevector c_(k) from the innovative (fixed) codebook through aninnovation filter 205 (F(z)) whose frequency response emphasizes thehigher frequencies more than lower frequencies. The coefficients of F(z)are related to the amount of periodicity in the excitation signal u.

Many methods known to those skilled in the art are available forobtaining valid periodicity coefficients. For example, the value of gainb provides an indication of periodicity. That is, if gain b is close to1, the periodicity of the excitation signal u is high, and if gain b isless than 0.5, then periodicity is low.

Another efficient way to derive the filter F(z) coefficients is torelate them to the amount of pitch contribution in the total excitationsignal. This results in a frequency response depending on the subframeperiodicity, where higher frequencies are more strongly emphasized(stronger overall slope) for higher pitch gains. Innovation filter 205has the effect of lowering the energy of the innovative codevector c_(k)at low frequencies when the excitation signal u is more periodic, whichenhances the periodicity of the excitation signal u at lower frequenciesmore than higher frequencies. Suggested forms for innovation filter 205areF(z)=1−σ_(z) ⁻¹,  (1)orF(z)=−αz+1−α_(z) ⁻¹  (2)where σ or α are periodicity factors derived from the level ofperiodicity of the excitation signal u.

The second three-term form of F(z) is used in a preferred embodiment.The periodicity factor α is computed in the voicing factor generator204. Several methods can be used to derive the periodicity factor αbased on the periodicity of the excitation signal U. Two methods arepresented below.

Method 1:

The ratio of pitch contribution to the total excitation signal u isfirst computed in voicing factor generator 204 by

$R_{p} = {\frac{b^{2}\mspace{11mu} v_{T}^{t}\mspace{11mu} v_{T}}{u^{t}\; u} = \frac{b^{2}\;{\sum\limits_{n = 0}^{N - 1}{v_{T}^{2}(n)}}}{\sum\limits_{n = 0}^{N - 1}{u^{2}(n)}}}$where v_(T) is the pitch codebook vector, b is the pitch gain, and u isthe excitation signal u given at the output of the adder 219 byu=gc _(k) +bv _(T)

Note that the term bv_(T) has its source in the pitch codebook (pitchcodebook) 201 in response to the pitch lag T and the past value of ustored in memory 203. The pitch codevector v_(T) from the pitch codebook201 is then processed through a low-pass filter 202 whose cut-offfrequency is adjusted by means of the index j from the demultiplexer217. The resulting codevector v_(T) is then multiplied by the gain bfrom the demultiplexer 217 through an amplifier 226 to obtain the signalbv_(T).

The factor α is calculated in voicing factor generator 204 byα=qR_(p) bounded by α<qwhere q is a factor which controls the amount of enhancement (q is setto 0.25 in this preferred embodiment).

Method 2:

Another method for calculating periodicity factor α is discussed below.

First, a voicing factor r_(v) is computed in voicing factor generator204 byr _(v)=(E _(v) −E _(c))/(E _(v) +E _(c))where E_(v) is the energy of the scaled pitch codevector bv_(T) andE_(c) is the energy of the scaled innovative codevector gc_(k). That is

$\begin{matrix}{E_{v} = {{b^{2}\mspace{11mu} v_{T}^{t}\mspace{11mu} v_{T}} = {b^{2}\;{\sum\limits_{n = 0}^{N - 1}{v_{T}^{2}(n)}}}}} \\{and} \\{E_{c} = {{g^{2}\mspace{11mu} c_{k}^{t}\mspace{11mu} c_{k}} = {g^{2}\;{\sum\limits_{n = 0}^{N - 1}{c_{k}^{2}(n)}}}}}\end{matrix}$

Note that the value of r_(v) lies between −1 and 1 (1 corresponds topurely voiced signals and −1 corresponds to purely unvoiced signals).

In this preferred embodiment, the factor α is then computed in voicingfactor generator 204 byα=0.125 (1+r _(v))which corresponds to a value of 0 for purely unvoiced signals and 0.25for purely voiced signals.

In the first, two-term form of F(z), the periodicity factor σ can beapproximated by using σ=2α in methods 1 and 2 above. In such a case, theperiodicity factor or is calculated as follows in method 1 above:σ=2qR_(p) bounded by σ<2q.

In method 2, the periodicity factor σ is calculated as follows:σ=0.25 (1+r _(v)).

The enhanced signal c_(f) is therefore computed by filtering the scaledinnovative codevector gc_(k) through the innovation filter 205 (F(z)).

The enhanced excitation signal u′ is computed by the adder 220 as:u′=c _(f) +bv _(T)

Note that this process is not performed at the encoder 100. Thus, it isessential to update the content of the pitch codebook 201 using theexcitation signal u without enhancement to keep synchronism between theencoder 100 and decoder 200. Therefore, the excitation signal u is usedto update the memory 203 of the pitch codebook 201 and the enhancedexcitation signal u′ is used at the input of the LP synthesis filter206.

Synthesis and Deemphasis

The synthesized signal s′ is computed by filtering the enhancedexcitation signal u′ through the LP synthesis filter 206 which has theform 1/Â(z), where Â(z) is the interpolated LP filter in the currentsubframe. As can be seen in FIG. 2, the quantized LP coefficients Â(z)on line 225 from demultiplexer 217 are supplied to the LP synthesisfilter 206 to adjust the parameters of the LP synthesis filter 206accordingly. The deemphasis filter 207 is the inverse of the preemphasisfilter 103 of FIG. 1. The transfer function of the deemphasis filter 207is given byD(z)=1/(1−μ_(z) ⁻¹)where μ is a preemphasis factor with a value located between 0 and 1 (atypical value is μ=0.7). A higher-order filter could also be used.

The vector s′ is filtered through the deemphasis filter D(z) (module207) to obtain the vector s_(d), which is passed through the high-passfilter 208 to remove the unwanted frequencies below 50 Hz and furtherobtain s_(h).

Oversampling and High-Frequency Regeneration

The over-sampling module 209 conducts the inverse process of thedown-sampling module 101 of FIG. 1. In this preferred embodiment,oversampling converts from the 12.8 kHz sampling rate to the original 16kHz sampling rate, using techniques well known to those of ordinaryskill in the art. The oversampled synthesis signal is denoted ŝ. Signalŝ is also referred to as the synthesized wideband intermediate signal.

The oversampled synthesis signal ŝ does not contain the higher frequencycomponents which were lost by the downsampling process (module 101 ofFIG. 1) at the encoder 100. This gives a low-pass perception to thesynthesized speech signal. To restore the full band of the originalsignal, a high frequency generation procedure is disclosed. Thisprocedure is performed in modules 210 to 216, and adder 221, andrequires input from voicing factor generator 204 (FIG. 2).

In this new approach, the high frequency contents are generated byfilling the upper part of the spectrum with a white noise properlyscaled in the excitation domain, then converted to the speech domain,preferably by shaping it with the same LP synthesis filter used forsynthesizing the down-sampled signal ŝ.

The high frequency generation procedure in accordance with the presentinvention is described hereinbelow.

The random noise generator 213 generates a white noise sequence w′ witha flat spectrum over the entire frequency bandwidth, using techniqueswell known to those of ordinary skill in the art. The generated sequenceis of length N′ which is the subframe length in the original domain.Note that N is the subframe length in the down-sampled domain. In thispreferred embodiment, N=64 and N′=80 which correspond to 5 ms.

The white noise sequence is properly scaled in the gain adjusting module214. Gain adjustment comprises the following steps. First, the energy ofthe generated noise sequence w′ is set equal to the energy of theenhanced excitation signal u′ computed by an energy computing module210, and the resulting scaled noise sequence is given by

$\begin{matrix}{{{w(n)} = {{w^{\prime}(n)}\sqrt{\frac{\sum\limits_{n = 0}^{N - 1}{u^{\prime 2}(n)}}{\sum\limits_{n = 0}^{N^{\prime} - 1}{w^{\prime 2}(n)}}}}},} & \; & \; & {{n = 0},\ldots\mspace{11mu},{N^{\prime} - 1.}}\end{matrix}$

The second step in the gain scaling is to take into account the highfrequency contents of the synthesized signal at the output of thevoicing factor generator 204 so as to reduce the energy of the generatednoise in case of voiced segments (where less energy is present at highfrequencies compared to unvoiced segments). Preferably, measuring thehigh frequency contents is implemented by measuring the tilt of thesynthesis signal through a spectral tilt calculator 212 and reducing theenergy accordingly. Other measurements such as zero crossingmeasurements can equally be used. When the tilt is very strong, whichcorresponds to voiced segments, the noise energy is further reduced. Thetilt factor is computed in module 212 as the first correlationcoefficient of the synthesis signal s_(h) and it is given by:

${{tilt} = \frac{\sum\limits_{n = 1}^{N - 1}{{s_{h}(n)}\;{s_{h}\left( {n - 1} \right)}}}{\sum\limits_{n = 0}^{N - 1}{s_{h}^{2}(n)}}},$conditioned by tilt≧0 and tilt≧r_(v).where voicing factor r_(v) is given byr _(v)=(E _(v) −E _(c))/(E _(v) +E _(c))where E_(v) is the energy of the scaled pitch codevector bv_(T) andE_(c) is the energy of the scaled innovative codevector gc_(k), asdescribed earlier. Voicing factor r_(v) is most often less than tilt butthis condition was introduced as a precaution against high frequencytones where the tilt value is negative and the value of r_(v) is high.Therefore, this condition reduces the noise energy for such tonalsignals.

The tilt value is 0 in case of flat spectrum and 1 in case of stronglyvoiced signals, and it is negative in case of unvoiced signals wheremore energy is present at high frequencies.

Different methods can be used to derive the scaling factor g_(t) fromthe amount of high frequency contents. In this invention, two methodsare given based on the tilt of signal described above.

Method 1:

The scaling factor g_(t) is derived from the tilt byg _(t)=1−tilt bounded by 0.2≦g_(t)≦1.0

For strongly voiced signal where the tilt approaches 1, g_(t) is 0.2 andfor strongly unvoiced signals g_(t) becomes 1.0.

Method 2:

The tilt factor g_(t) is first restricted to be larger or equal to zero,then the scaling factor is derived from the tilt byg _(t)=10^(−0.6tilt)

The scaled noise sequence w_(g) produced in gain adjusting module 214 istherefore given by:w_(g)=g_(t)w′

When the tilt is close to zero, the scaling factor g_(t) is close to 1,which does not result in energy reduction. When the tilt value is 1, thescaling factor g_(t) results in a reduction of 12 dB in the energy ofthe generated noise.

Once the noise is properly scaled (w_(g)), it is brought into the speechdomain using the spectral shaper 215. In the preferred embodiment, thisis achieved by filtering the noise w_(g) through a bandwidth expandedversion of the same LP synthesis filter used in the down-sampled domain(1/Â(z/0.8)). The corresponding bandwidth expanded LP filtercoefficients are calculated in the spectral shaper 215.

The filtered scaled noise sequence w_(f) is then band-pass filtered tothe required frequency range to be restored using the band-pass filter216. In the preferred embodiment, the band-pass filter 216 restricts thenoise sequence to the frequency range 5.6-7.2 kHz. The resultingband-pass filtered noise sequence z is added in adder 221 to theoversampled synthesized speech signal ŝ to obtain the finalreconstructed sound signal s_(out) on the output 223.

Although the present invention has been described hereinabove by way ofa preferred embodiment thereof, this embodiment can be modified at will,within the scope of the appended claims, without departing from thespirit and nature of the subject invention. Even though the preferredembodiment discusses the use of wideband speech signals, it will beobvious to those skilled in the art that the subject invention alsoencompasses other embodiments using wideband signals in general and thatit is not necessarily limited to speech applications.

1. A method for transforming a first signal into a second signalcomprising supplying the first signal to a signal transforming device toproduce the second signal, wherein the signal transforming device has acodebook and is selected from the group consisting of a) an encoder,wherein the first signal is coded into the second signal and b) adecoder, wherein the first signal is decoded into the second signal,wherein: the codebook comprises a set of pulse amplitude/positioncombinations; each pulse amplitude/position combination defines a numberof different positions and comprises both zero-amplitude pulses andnon-zero-amplitude pulses assigned to respective positions of thecombination; and each non-zero-amplitude pulse assumes one of aplurality of possible amplitudes; and wherein the codebook pulseamplitudes and positions are indexed by: forming a set of at least onetrack of said pulse positions; restraining the positions of thenon-zero-amplitude pulses of the combinations of the codebook inaccordance with the set of at least one track of pulse positions;indexing according to a first procedure, hereinafter named procedure 1,the position and amplitude of one non-zero-amplitude pulse when only theposition of said one non-zero-amplitude pulse is located in one track ofsaid set; indexing according to a second procedure, hereinafter namedprocedure 2, the positions and amplitudes of two non-zero-amplitudepulses when only the positions of said two non-zero-amplitude pulses arelocated in one track of said set; and when the positions of a number Xof non-zero-amplitude pulses are located in one track of said set,wherein X≧3: dividing the positions of said one track into two sections;using a further procedure associated wit said number X, hereinafternamed procedure X, for indexing the positions and amplitudes of said Xnon-zero-amplitude pulses, said procedure X comprising: identifying inwhich one of the two track sections each non-zero-amplitude pulse islocated; calculating subindices of said X non-zero-amplitude pulsesusing the procedures 1 and 2 in at least one of said track sections andentire track; and calculating a position-and-amplitude index of said Xnon-zero-amplitude pulses by combining said subindices.
 2. A method fortransforming a first signal into a second signal as defined in claim 1,comprising interleaving the pulse positions of each track with the pulsepositions of the other tracks.
 3. A method for transforming a firstsignal into a second signal as defined in claim 1, wherein calculating aposition-and-amplitude index of said X non-zero-amplitude pulsescomprises: calculating at least one intermediate index by combining atleast two of said subindices; and calculating the position-and-amplitudeindex of said X non-zero-amplitude pulses by combining the remainingsubindices and said at least one intermediate index.
 4. A method fortransforming a first signal into a second signal as defined in claim 1,wherein said procedure 1 comprises producing a position-and-amplitudeindex including a position index indicative of the position of said onenon-zero-amplitude pulse in said one track, and an amplitude indexindicative of the amplitude of said one non-zero-amplitude pulse.
 5. Amethod for transforming a first signal into a second signal as definedin claim 4, wherein the position index comprises a first group of bits,and the amplitude index comprises at least one bit.
 6. A method fortransforming a first signal into a second signal as defined in claim 5,in which said at least one bit of the amplitude index is a bit of higherrank.
 7. A method for transforming a first signal into a second signalas defined in claim 5, wherein said plurality of possible amplitudes ofeach non-zero-amplitude pulse comprises +1 and −1, and wherein said atleast one bit of the amplitude index is a sign bit.
 8. A method fortransforming a first signal into a second signal as defined in claim 1,wherein: said plurality of possible amplitudes of eachnon-zero-amplitude pulse comprises +1 and −1; and the procedure 1comprises producing a position-and-amplitude index of said onenon-zero-amplitude pulse having the form:I _(1p) =p+s×2^(M) wherein p is a position index of said onenon-zero-amplitude pulse in said one track, s is a sign index of saidone non-zero-amplitude pulse, and 2^(M) is the number of positions insaid one track.
 9. A method for transforming a first signal into asecond signal as defined in claim 8, wherein the number of positions insaid one track is 16, and wherein the position-and-amplitude index is a5-bit index represented in the following table: Sign Position s b₃ b₂ b₁b₀


10. A method for transforming a first signal into a second signal asdefined in claim 1, wherein said procedure 2 comprises producing aposition-and-amplitude index including: first and second positionindices respectively indicative of the positions of the twonon-zero-amplitude pulses in said one track; and an amplitude indexindicative of the amplitudes of said two non-zero-amplitude pulses. 11.A method far transforming a first signal into a second signal as definedin claim 10, wherein, in the position-and-amplitude index: the amplitudeindex comprises at least one bit; the first position index comprises afirst group of bits; and the second position index comprises a secondgroup of bits.
 12. A method for transforming a first signal into asecond signal as defined in claim 11, wherein, in theposition-and-amplitude index: said at least one bit of the amplitudeindex is a bit of higher rank; the bits of the first group are bits ofintermediate rank; and the bits of the second group are bits of lowerrank.
 13. A method for transforming a first signal into a second signalas defined in claim 11, wherein said plurality of possible amplitudes ofeach non-zero-amplitude pulse comprises +1 and −1, and wherein said atleast one bit of the amplitude index is a sign bit.
 14. A method fortransforming a first signal into a second signal as defined in claim 10,wherein the procedure 2 comprises: when said two pulses have a sameamplitude, producing an amplitude index indicative of the amplitude ofthe non-zero-amplitude pulse whose position is indicated by the firstposition index, producing a first position index indicative of thesmaller position of the two non-zero-amplitude pulses in said one track,and producing a second position index indicative of the larger positionof the two non-zero-amplitude pulses in said one track; and when saidtwo pulses have different amplitudes, producing an amplitude indexindicative of the amplitude of the non-zero-amplitude pulse whoseposition is indicated by the first position index, producing a firstposition index indicative of the larger position of the twonon-zero-amplitude pulses in said one track, and producing a secondposition index indicative of the smaller position of the twonon-zero-amplitude pulses in said one track.
 15. A method fortransforming a first signal into a second signal as defined in claim 1,wherein the procedure 2 comprises, when the position of a firstnon-zero-amplitude pulse of position index p₀ and sign index σ₀, and theposition of a second non-zero-amplitude pulse of position index p₁ andsign index σ1 are located in one track of said set, producing aposition-and-amplitude index of said first and second non-zero-amplitudepulses of the form: If σ₀ = σ₁ If p₀ ≦ p₁ I_(2p) = p₁ + p₀ × 2^(M) + σ₀× 2^(2M) If p₀ ≧ p₁ I_(2p) = p₀ + p₁ × 2^(M) + σ₀ × 2^(2M) If σ₀ ≠ σ₁ Ifp₀ ≦ p₁ I_(2p) = p₀ + p₁ × 2^(M) + σ₁ × 2^(2M) If p₀ ≧ p₁ I_(2p) = p₁ +p₀ × 2^(M) + σ₀ × 2^(2M)

where 2^(M) is the number of positions in said one track.
 16. A methodfor transforming a first signal into a second signal as defined in claim15, wherein the number of positions in said one track is 16, and whereinthe position-and-amplitude index is a 9-bit index represented in thefollowing table: Sign Position p₀ Position p₁ s b b b b b b b b b₃ b₃ b₂b₀ b₃ b₂ b₁ b₀


17. A method for transforming a first signal into a second signal asdefined in claim 1, wherein, when X=3; dividing the positions of saidone track into two sections comprises dividing the positions of said onetrack into lower and upper track sections; and the procedure 3comprises: identifying one of the upper and lower track sections whichcontains the positions of at least two non-zero-amplitude pulses;calculating a first subindex of said at least two non-zero-amplitudepulses located in said one track section using the procedure 2 appliedto the positions of said one track section; calculating a secondsubindex of the remaining non-zero-amplitude pulse using the procedure 1applied to the positions of the entire said one track; and producing aposition-and-amplitude index of the three non-zero-amplitude pulses bycombining said first and second subindices.
 18. A method fortransforming a first signal into a second signal as defined in claim 17,wherein: calculating a first subindex of said at least twonon-zero-amplitude pulses located in said one track section using theprocedure 2 comprises, when the positions of said at least twonon-zero-amplitude pulses are located in the upper section, shifting thepositions of said at least two non-zero-amplitude pulses from the uppersection to the lower section.
 19. A method for transforming a firstsignal into a second signal as defined in claim 18, wherein shifting thepositions of said at least two non-zero-amplitude pulses from the uppersection to the lower section comprises masking a number of leastsignificant bits of the position indices of said at least twonon-zero-amplitude pulses with a mask consisting of said number of 1's.20. A method for transforming a first signal into a second signal asdefined in claim 17, wherein calculating a first subindex of said atleast two non-zero-amplitude pulses located in said one track sectionusing the procedure 2 comprises inserting a section index indicating theone of said lower and upper track sections in which said at least twonon-zero-amplitude pulses are located.
 21. A method for transforming afirst signal into a second signal as defined in claim 17, wherein thenumber of positions in said one track is 16, and wherein theposition-and-amplitude index is a 13-bit index represented in thefollowing table: Position of Section 2 pulses in section k Sign 3^(rd)pulse Index s₀ p₀ p₁ s b b b b b b b b b b₃ b₂ b₁ b₀ k s b₂ b₁ b₀ b₂ b₁b₀


22. A method for transforming a first signal into a second signal asdefined in claim 1, wherein: said procedure 1 comprises producing aposition-and-amplitude index including a position index indicative ofthe position of said one non-zero-amplitude pulse in said one track, andan amplitude index indicative of the amplitude of said onenon-zero-amplitude pulse, wherein the position index comprises a firstgroup of bits, and the position index comprises at least one bit; saidprocedure 2 comprises producing a position-and-amplitude index includingfirst and second position indices respectively indicative of thepositions of the two non-zero-amplitude pulses in said one track, and anamplitude index indicative of the amplitudes of said twonon-zero-amplitude pulses, wherein the amplitude index comprises atleast one bit, the first position index comprises a first group of bits,and the second position index comprises a second group of bits; whenX=3: dividing the positions of said one track into two sectionscomprises dividing the positions of said one track into lower and uppertrack sections; and the procedure 3 comprises: identifying one of theupper and lower track sections which contains the positions of at leasttwo non-zero-amplitude pulses; calculating a first subindex of said atleast two non-zero-amplitude pulses located in said one track sectionusing the procedure 2 applied to the positions of said one tracksection; calculating a second subindex of the remainingnon-zero-amplitude pulse using the procedure 1 applied to the positionsof the entire said one track; and producing a position-and-amplitudeindex of the three non-zero-amplitude pulses by combining said first andsecond subindices.
 23. A method for transforming a first signal into asecond signal as defined in claim 22, wherein when X=4: dividing thepositions of said one track into two sections comprises dividing thepositions of said one track into lower and upper track sections; and theprocedure 4 comprises: when the upper track section contains thepositions of the four non-zero amplitude pulses: further dividing theupper track section into lower and upper track subsections; identifyingone of the upper and lower track subsections which contains thepositions of at least two non-zero-amplitude pulses; calculating a firstsubindex of said at least two non-zero-amplitude pulses located in saidone track subsection using the procedure 2 applied to the positions ofsaid one track subsection; calculating a second subindex of theremaining two non-zero-amplitude pulse using the procedure 2 applied tothe positions of the entire upper track section; and producing aposition-and-amplitude index of the four non-zero-amplitude pulses bycombining said first and second subindices; when the lower track sectioncontains the position of one non-zero-amplitude pulse and the uppertrack section contains the positions of the three other non-zeroamplitude pulses: calculating a first subindex of said onenon-zero-amplitude pulses located in the lower track section using theprocedure 1 applied to the positions of said lower track section;calculating a second subindex of the remaining three non-zero-amplitudepulses located in the upper track section using the procedure S appliedto the positions of the upper track section; and producing aposition-and-amplitude index of the four non-zero-amplitude pulses bycombining said first and second subindices; when the lower tack sectioncontains the positions of two non-zero-amplitude pulses and the uppertrack section contains the positions of the two other non-zero amplitudepulses: calculating a first subindex of said two non-zero-amplitudepulses located in the lower track section using the procedure 2 appliedto the positions of said lower track section; calculating a secondsubindex of the remaining two non-zero-amplitude pulses located in theupper track section using the procedure 2 applied to the positions ofthe upper track section; and producing a position-and-amplitude index ofthe four non-zero-amplitude pulses by combining said first and secondsubindices; when the lower tack section contains the positions of threenon-zero-amplitude pulses and the upper track section contains theposition of the other non-zero amplitude pulse: calculating a firstsubindex of said three non-zero-amplitude pulses located in the lowertrack section using the procedure 3 applied to the positions of saidlower track section; calculating a second subindex of the remainingnon-zero-amplitude pulse located in the upper track section using theprocedure 1 applied to the positions of the upper track section; andproducing a position-and-amplitude index of the four non-zero-amplitudepulses by combining said first and second subindices; when the lowertack section contains the positions of the four non-zero amplitudepulses: further dividing the lower track section into lower and uppertrack subsections; identifying one of the upper and lower tracksubsections which contains the positions of at least twonon-zero-amplitude pulses; calculating a first subindex of said at leasttwo non-zero-amplitude pulses located in said one track subsection usingthe procedure 2 applied to the positions of said one track subsection;calculating a second subindex of the remaining two non-zero-amplitudepulse using the procedure 2 applied to the positions of the entire lowertrack section; and producing a position-and-amplitude index of the threenon-zero-amplitude pulses by combining said firs: and second subindices.24. A method for transforming a first signal into a second signal asdefined in claim 23, wherein the procedure 4 comprises: when said onetrack subsection is the upper subsection, calculating a first subindexof said at least two non-zero-amplitude pulses located in said one tracksubsection using the procedure 2 comprises shifting the positions ofsaid at least two non-zero-amplitude pulses from the upper tracksubsection to the lower track subsection.
 25. A method for transforminga first signal into a second signal as defined in claim 24, whereinshifting the positions of said at least two non-zero-amplitude pulsesfrom the upper subsection to the lower subsection comprises masking anumber of least significant bits of the position indices of said atleast two non-zero-amplitude pulses with a mask consisting of saidnumber of 1's.
 26. A method for transforming a first signal into asecond signal as defined in claim 23, wherein when X=5: dividing thepositions of said one track into two track sections comprises dividingthe positions of said one track into lower and upper sections; and theprocedure 5 comprises: detecting one of the lower and upper tacksections in which the positions of at least three non-zero amplitudepulses are located; calculating a first subindex of threenon-zero-amplitude pulses located in said one track section using theprocedure 3 applied to the positions of said one track section;calculating a second subindex of the remaining two non-zero-amplitudepulses using the procedure 2 applied to the positions of the entire saidone track; and producing a position-and-amplitude index of the fivenon-zero-amplitude pulses by combining said first and second subindices.27. A method for transforming a first signal into a second signal asdefined in claim 23, wherein when X=5: dividing the positions of saidone track into two sections comprises dividing the positions of said onetrack into lower and upper track sections; and the procedure 5comprises: when the upper track section contains the positions of thefive non-zero amplitude pulses: calculating a first subindex of threenon-zero-amplitude pulses located in said upper track section using theprocedure 3 applied to the positions of said upper track section;calculating a second subindex of the remaining two non-zero-amplitudepulses using the procedure 2 applied to the positions of the entire saidone track; and producing a position-and-amplitude index of the fivenon-zero-amplitude pulses by combining said first and second subindices;when the lower track section contains the position of onenon-zero-amplitude pulse and the upper track section contains thepositions of the four other non-zero amplitude pulses: calculating afirst subindex of three non-zero-amplitude pulses located in the uppertrack section using the procedure 3 applied to the positions of saidupper track section; calculating a second subindex of the remaining twonon-zero-amplitude pulses using the procedure 2 applied to the positionsof the entire said one track; and producing a position-and-amplitudeindex of the five non-zero-amplitude pulses by combining said first andsecond subindices; when the lower track section contains the positionsof two non-zero-amplitude pulses and the upper track section containsthe positions of the three other non-zero amplitude pulses: calculatinga first subindex of said three non-zero-amplitude pulses located in theupper track section using the procedure 3 applied to the positions ofsaid upper track section; calculating a second subindex of the remainingtwo non-zero-amplitude pulses located in the lower track section usingthe procedure 2 applied to the positions of the entire said one track;and producing a position-and-amplitude index of the fivenon-zero-amplitude pulses by combining said first and second subindices;when the lower track section contains the position of threenon-zero-amplitude pulses and the upper track section contains thepositions of the other two non-zero amplitude pulses: calculating afirst subindex of said three non-zero-amplitude pulses located in thelower track section using the procedure 3 applied to the positions ofsaid lower track section; calculating a second subindex of the remainingtwo non-zero-amplitude pulses located in the upper track section usingthe procedure 2 applied to the positions of the entire said one track;and producing a position-and-amplitude index of the fivenon-zero-amplitude pulses by combining said first and second subindices;when the lower track section contains the positions of four non-zeroamplitude pulses and the upper track section contains the position ofthe other non-zero amplitude pulse: calculating a first subindex ofthree non-zero-amplitude pulses located in the lower track section usingthe procedure 3 applied to the positions of said lower track section;calculating a second subindex of the remaining two non-zero-amplitudepulses using the procedure 2 applied to the positions of the entire saidone track; and producing a position-and-amplitude index of the fivenon-zero-amplitude pulses by combining said first and second subindices;when the lower track section contains the positions of the fivenon-zero-amplitude pulses: calculating a first subindex of threenon-zero-amplitude pulses located in the lower track section using theprocedure 3 applied to the positions of said lower track section;calculating a second subindex of the remaining two non-zero-amplitudepulses using the procedure 2 applied to the positions of the entire saidone track; and producing a position-and-amplitude index of the fivenon-zero-amplitude pulses by combining said first and second subindices.28. A method for transforming a first signal into a second signal asdefined in claim 27, wherein when X=6: dividing the positions of saidone track into two sections comprises dividing the positions of said onetrack into lower and upper track sections; and the procedure 6comprises: when the upper track section contains the positions of thesix non-zero amplitude pulses: calculating a first subindex of fivenon-zero-amplitude pulses located in said upper track section using theprocedure 5 applied to the positions of said upper track section;calculating a second subindex of the remaining non-zero-amplitude pulseusing the procedure 1 applied to the positions of the upper tracksection; and producing a position-and-amplitude index of the sixnon-zero-amplitude pulses by combining said first and second subindices;when the lower track section contains the position of onenon-zero-amplitude pulse and the upper track section contains thepositions of the five other non-zero amplitude pulses: calculating afirst subindex of the five non-zero-amplitude pulses located in theupper track section using the procedure 5 applied to the positions ofsaid upper track section; calculating a second subindex of thenon-zero-amplitude pulse located in the lower track section using theprocedure 1 applied to the positions of said lower track section; andproducing a position-and-amplitude index of the six non-zero-amplitudepulses by combining said first and second subindices; when the lowertrack section contains the positions of two non-zero-amplitude pulsesand the upper track section contains the positions of the four othernon-zero amplitude pulses: calculating a first subindex of the fournon-zero-amplitude pulses located in the upper track section using theprocedure 4 applied to the positions of said upper track section;calculating a second subindex of the remaining two non-zero-amplitudepulses located in the lower track section using the procedure 2 appliedto the positions of said lower track section; and producing aposition-and-amplitude index of the six non-zero-amplitude pulses bycombining said first and second subindices; when the lower track sectioncontains the positions of three non-zero-amplitude pulses and the uppertrack section contains the positions of the other three non-zeroamplitude pulses: calculating a first subindex of said threenon-zero-amplitude pulses located in the lower track section using theprocedure 3 applied to the positions of said lower track section;calculating a second subindex of the remaining non-zero-amplitude pulseslocated in the upper track section using the procedure 3 applied to thepositions of the upper track section; and producing aposition-and-amplitude index of the six non-zero-amplitude pulses bycombining said first and second subindices; when the lower track sectioncontains the positions of four non-zero amplitude pulses and the uppertrack section contains the positions of the other two non-zero amplitudepulses: calculating a first subindex of the four non-zero-amplitudepulses located in the lower track section using the procedure 4 appliedto the positions of said lower track section; calculating a secondsubindex of the remaining two non-zero-amplitude pulses located in theupper track section using the procedure 2 applied to the positions ofsaid upper track section; and producing a position-and-amplitude indexof the six non-zero-amplitude pulses by combining said first and secondsubindices; when the lower track section contains the positions of fivenon-zero-amplitude pulses and the upper track section contains theposition of the remaining non-zero amplitude pulse: calculating a firstsubindex of the five non-zero-amplitude pulses located in the lowertrack section using the procedure 5 applied to the positions of saidlower track section; calculating a second subindex of the remainingnon-zero-amplitude pulse located in the upper track section using theprocedure 1 applied to the positions of said upper track section; andproducing a position-and-amplitude index of the six non-zero-amplitudepulses by combining said first and second subindices; and when the lowertrack section contains the positions of the six non-zero-amplitudepulses: calculating a first subindex of five non-zero-amplitude pulseslocated in the lower track section using the procedure 5 applied to thepositions of said lower track section; calculating a second subindex ofthe remaining non-zero-amplitude pulse located in the lower tracksection using the procedure 1 applied to the positions of the lowertrack section; and producing a position-and-amplitude index of the sixnon-zero-amplitude pulses by combining said first and second subindices.29. A device for transforming a first signal into a second signal,wherein: the signal transforming device performs a transformingoperation selected from the group consisting of a) coding the firstsignal into the second signal and b) decoding the first signal into thesecond signal; the signal transforming device comprises a codebook; thecodebook comprises a set of pulse amplitude/position combinations; eachpulse amplitude/position combination defines a number of differentpositions and comprises both zero-amplitude pulses andnon-zero-amplitude pulses assigned to respective positions of thecombination; and each non-zero-amplitude pulse assumes one of aplurality of possible amplitudes; and wherein the codebook indexes thepulse amplitudes and positions by: forming a set of at least one trackof said pulse positions; restraining the positions of thenon-zero-amplitude pulses of the combinations of the codebook inaccordance with the set of at least one track of pulse positions;indexing according to a first procedure, hereinafter named procedure 1,the position and amplitude of one non-zero-amplitude pulse when only theposition of said one non-zero-amplitude pulse is located in one track ofsaid set; indexing according to a second procedure, hereinafter namedprocedure 2, the positions and amplitudes of two non-zero-amplitudepulses when only the positions of said two non-zero-amplitude pulses arelocated in one track of said set; and when the positions of a number Xof non-zero-amplitude pulses are located in one track of said set,wherein x≧3: dividing the positions of said one track into two sections;using a further procedure associated with said number X, hereinafternamed procedure X, for indexing the positions and amplitudes of said Xnon-zero-amplitude pulses, said procedure X comprising: identifying inwhich one of the two track sections each non-zero-amplitude pulse islocated; and calculating subindices of said X non-zero-amplitude pulsesusing the procedures 1 and 2 in at least one of said track sections andentire track; and calculating a position and amplitude index of said Xnon-zero-amplitude pulses by combining said subindices.
 30. A device fortransforming a first signal into a second signal as defined in claim 29,wherein the pulse positions of each track are interleaved with the pulsepositions of the other tracks.
 31. A device for transforming a firstsignal into a second signal as defined in claim 29, wherein the theprocedure X calculates the position-and-amplitude index of said Xnon-zero-amplitude pulses by; calculating at least one intermediateindex by combining at least two of said subindices; and calculating theposition-and-amplitude index of said X non-zero-amplitude pulses bycombining the remaining subindices and said at least one intermediateindex.
 32. A device for transforming a first signal into a second signalas defined in claim 29, wherein said procedure 1 produces aposition-and-amplitude index including a position index indicative ofthe position of said one non-zero-amplitude pulse in said one track, andan amplitude index indicative of the amplitude of said onenon-zero-amplitude pulse.
 33. A device for transforming a first signalinto a second signal as defined in claim 32, wherein the position indexcomprises a first group of bits, and the amplitude index comprises atleast one bit.
 34. A device for transforming a first signal into asecond signal as defined in claim 33, in which said at least one bit ofthe amplitude index is a bit of higher rank.
 35. A device fortransforming a first signal into a second signal as defined in claim 33,wherein said plurality of possible amplitudes of each non-zero-amplitudepulse comprises +1 and −1, and wherein said at least one bit of theamplitude index is a sign bit.
 36. A device for transforming a firstsignal into a second signal as defined in claim 29, wherein: saidplurality of possible amplitudes of each non-zero-amplitude pulsecomprises +1 and −1; and the procedure 1 produces aposition-and-amplitude index of said one non-zero-amplitude pulse havingthe form:I _(1p) =p+s×2^(M) wherein p is a position index of said onenon-zero-amplitude pulse in said one track, s is a sign index of saidone non-zero-amplitude pulse, and 2^(M) is the number of positions insaid one track.
 37. A device for transforming a first signal into asecond signal as defined in claim 36, wherein the number of positions insaid one track is 16, and wherein the position-and-amplitude index is a5-bit index represented in the following table: Sign Position s b₃ b₂ b₁b₀


38. A device for transforming a first signal into a second signal asdefined in claim 29, wherein said procedure 2 produces aposition-and-amplitude index including: first and second positionindices respectively indicative of the positions of the twonon-zero-amplitude pulses in said one track; and an amplitude indexindicative of the amplitudes of said two non-zero-amplitude pulses. 39.A device for transforming a first signal into a second signal as definedin claim 38, wherein, in the position-and-amplitude index: the amplitudeindex comprises at least one bit; the first position index comprises afirst group of bits; and the second position index comprises a secondgroup of bits.
 40. A device for transforming a first signal into asecond signal as defined in claim 39, wherein, in theposition-and-amplitude index: said at least one bit of the amplitudeindex is a bit of higher rank; the bits of the first group are bits ofintermediate rank; and the bits of the second group are bits of lowerrank.
 41. A device for transforming a first signal into a second signalas defined in claim 39, wherein said plurality of possible amplitudes ofeach non-zero-amplitude pulse comprises +1 and −1, and wherein said atleast one bit of the amplitude index is a sign bit.
 42. A device fortransforming a first signal into a second signal as defined in claim 39,wherein the procedure 2 comprises: when said two pulses have a sameamplitude: producing an amplitude index indicative of the amplitude ofthe non-zero-amplitude pulse whose position is indicated by the firstposition index; producing a first position Index indicative of thesmaller position of the two non-zero-amplitude pulses in said one track;producing a second position index indicative of the larger position ofthe two non-zero-amplitude pulses in said one track; and when said twopulses have different amplitudes: producing an amplitude indexindicative of the amplitude of the non-zero-amplitude pulse whoseposition is indicated by the first position index; producing a firstposition index indicative of the larger position of the twonon-zero-amplitude pulses in said one track; and producing a secondposition index indicative of the smaller position of the twonon-zero-amplitude pulses in said one track.
 43. A device fortransforming a first signal into a second signal as defined in claim 29,wherein the procedure 2 comprises, when the position of a firstnon-zero-amplitude pulse of position index p₀ and sign index σ₀ and theposition of a second non-zero-amplitude pulse of position index p₁ andsign index σ₁ are located in one track of said set, producing aposition-and-amplitude index of said first and second non-zero-amplitudepulses of the form: If σ₀ = σ₁ If p₀ ≦ p₁ I_(2p) = p₁ + p₀ × 2^(M) + σ₀× 2^(2M) If p₀ ≧ p₁ I_(2p) = p₀ + p₁ × 2^(M) + σ₀ × 2^(2M) If σ₀ ≠ σ₁ Ifp₀ ≦ p₁ I_(2p) = p₀ + p₁ × 2^(M) + σ₁ × 2^(2M) If p₀ ≧ p₁ I_(2p) = p₁ +p₀ × 2^(M) + σ₀ × 2^(2M)

where 2^(M) is the number of positions in said one track.
 44. A devicefor transforming a first signal into a second signal as defined in claim43, wherein the number of positions in said one track is 16, and whereinthe position-and-amplitude index is a 9-bit index represented in thefollowing table: Sign Position p₀ Position p₁ s b₃ b₃ b₂ b₀ b₃ b₂ b₁ b₀


45. A device for transforming a first signal into a second signal asdefined in claim 29, wherein, when X=3; the positions of said one trackare divided into lower and upper track sections; and the procedure 3comprises: identifying one of the upper and lower track sections whichcontains the positions of at least two non-zero-amplitude pulses;calculating a first subindex of said at least two non-zero-amplitudepulses located in said one track section using the procedure 2 appliedto the positions of said one track section; calculating a secondsubindex of the remaining non-zero-amplitude pulse using the procedure 1applied to the positions of the entire said one track; and producing aposition-and-amplitude index of the three non-zero-amplitude pulses bycombining said first and second subindices.
 46. A device fortransforming a first signal into a second signal as defined in claim 45,wherein: the procedure 3 produces a first subindex of said at least twonon-zero-amplitude pulses located in said one track section using theprocedure 2, when the positions of said at least two non-zero-amplitudepulses are located in the upper section, by shifting the positions ofsaid at least two non-zero-amplitude pulses from the upper section tothe lower section.
 47. A device for transforming a first signal into asecond signal as defined in claim 46, wherein the procedure 3 shifts thepositions of said at least two non-zero-amplitude pulses from the uppersection to the lower section by masking a number of least significantbits of the position indices of said at least two non-zero-amplitudepulses with a mask consisting of said number of 1's.
 48. A device fortransforming a first signal into a second signal as defined in claim 45,wherein the procedure 3 calculates a first subindex of said at least twonon-zero-amplitude pulses located in said one track section using theprocedure 2 by inserting a section index indicating the one of saidlower and upper track sections in which said at least twonon-zero-amplitude pulses are located.
 49. A device for transforming afirst signal into a second signal as defined in claim 45, wherein thenumber of positions in said one track is 16, and wherein theposition-and-amplitude index is a 13-bit index represented in thefollowing table: Position of Section 2 pulses in section k Sign 3^(rd)pulse Index s₀ p₀ p₁ s b b b b k s b₂ b b b b b b₃ b₂ b₁ b₀ b₁ b₀ b₂ b₁b₀


50. A device for transforming a first signal into a second signal asdefined in claim 29, wherein: said procedure 1 produces aposition-and-amplitude index including a position index indicative ofthe position of said one non-zero-amplitude pulse in said one track, andan amplitude index indicative of the amplitude of said onenon-zero-amplitude pulse, wherein the position index comprises a firstgroup of bits, and the position index comprises at least one bit; saidprocedure 2 produces a position-and-amplitude index including first andsecond position indices respectively indicative of the positions of thetwo non-zero-amplitude pulses in said one track, and an amplitude indexindicative of the amplitudes of said two non-zero-amplitude pulses,wherein the amplitude index comprises at least one bit, the firstposition index comprises a first group of bits, and the second positionindex comprises a second group of bits; when X=3: the positions of saidone track are divided into lower and upper track sections; and theprocedure 3 comprises: identifying one of the upper and lower tracksections which contains the positions of at least two non-zero-amplitudepulses; calculating a first subindex of said at least twonon-zero-amplitude pulses located in said one track section using theprocedure 2 applied to the positions of said one track section;calculating a second subindex of the remaining non-zero-amplitude pulseusing the procedure 1 applied to the positions of the entire said onetrack; and producing a position-and-amplitude index of the threenon-zero-amplitude pulses by combining said first and second subindices.51. A device for transforming a first signal into a second signal asdefined in claim 50, wherein, when X=4: the positions of said one trackare divided into lower and upper track sections; and the procedure 4comprises: when the upper track section contains the positions of thefour non-zero amplitude pulses: further dividing the upper track sectioninto lower and upper track subsections; identifying one of the upper andlower track subsections which contains the positions of at least twonon-zero-amplitude pulses; calculating a first subindex of said at leasttwo non-zero-amplitude pulses located in said one track subsection usingthe procedure 2 applied to the positions of said one track subsection;calculating a second subindex of the remaining two non-zero-amplitudepulse using the procedure 2 applied to the positions of the entire saidupper track section; and producing a position-and-amplitude index of thefour non-zero-amplitude pulses by combining said first and secondsubindices; when the lower track section contains the position of onenon-zero-amplitude pulse and the upper track section contains thepositions of the three other non-zero amplitude pulses: calculating afirst subindex of said one non-zero-amplitude pulse located in the lowertrack section using the procedure 1 applied to the positions of saidlower track section; calculating a second subindex of the remainingthree non-zero-amplitude pulses located in the upper track section usingthe procedure 3 applied to the positions of the upper track section; andproducing a position-and-amplitude index of the four non-zero-amplitudepulses by combining said first and second subindices; when the lowertrack section contains the positions of two non-zero-amplitude pulsesand the upper track section contains the positions of the two othernon-zero amplitude pulses: calculating a first subindex of said twonon-zero-amplitude pulses located in the lower track section using theprocedure 2 applied to the positions of said lower track section;calculating a second subindex of the remaining two non-zero-amplitudepulses located in the upper track section using the procedure 2 appliedto the positions of the upper track section; and producing aposition-and-amplitude index of the four non-zero-amplitude pulses bycombining said first and second subindices; when the lower track sectioncontains the positions of three non-zero-amplitude pulses and the uppertrack section contains the position of the oilier non-zero amplitudepulse: calculating a first subindex of said three non-zero-amplitudepulses located in the lower track section using the procedure 3 appliedto the positions of said lower track section; calculating a secondsubindex of the remaining non-zero-amplitude pulse located in the uppertrack section using the procedure 1 applied to the positions of theupper track section; and producing a position-and-amplitude index of thefour non-zero-amplitude pulses by combining said first and secondsubindices; when the lower track section contains the positions of thefour non-zero amplitude pulses: further dividing the lower track sectioninto lower and upper track subsections; identifying one of the upper andlower track subsections which contains the positions of at least twonon-zero-amplitude pulses; calculating a first subindex of said at leasttwo non-zero-amplitude pulses located in said one track subsection usingthe procedure 2 applied to the positions of said one track subsection;calculating a second subindex of the remaining two non-zero-amplitudepulse using the procedure 2 applied to the positions of the entire lowertrack section; and producing a position-and-amplitude index of the fournon-zero-amplitude pulses by combining said first and second subindices.52. A device for transforming a first signal into a second signal asdefined in claim 51, wherein: when said one track subsection is theupper subsection, the procedure 4 calculates a first subindex of said atleast two non-zero-amplitude pulses located in said one track subsectionusing the procedure 2 comprises by shifting the positions of said atleast two non-zero-amplitude pulses from the upper track subsection tothe lower track subsection.
 53. A device for transforming a first signalinto a second signal as defined in claim 52, wherein the procedure 4shifts the positions of said at least two non-zero-amplitude pulses fromthe upper subsection to the lower subsection comprises by masking anumber of least significant bits of the position indices of said atleast two non-zero-amplitude pulses with a mask consisting of saidnumber of 1's.
 54. A device for transforming a first signal into asecond signal as defined in claim 51, wherein, when X=5: the positionsof said one track are divided into lower and upper track sections; andthe procedure 5 comprises: detecting one of the lower and upper tracksections in which the positions of at least three non-zero amplitudepulses are located; calculating a first subindex of thenon-zero-amplitude pulses located in said one track section using theprocedure 3 applied to the positions of said one track section;calculating a second subindex of the remaining two non-zero-amplitudepulses using the procedure 2 applied to the positions of the entire saidone track; and producing a position-and-amplitude index of the fivenon-zero-amplitude pulses by combining said first and second subindices.55. A device for transforming a first signal into a second signal asdefined in claim 51, wherein, when X=5: the positions of said one trackare divided into lower and upper sections; and the procedure 5comprises: when the upper track section contains the positions of thefive non-zero amplitude pulses: calculating a first subindex of threenon-zero-amplitude pulses located in said upper track section using theprocedure 3 applied to the positions of said upper track section;calculating a second subindex of the remaining two non-zero-amplitudepulses using the procedure 2 applied to the positions of the entire saidone track; and producing a position-and-amplitude index of the fivenon-zero-amplitude pulses by combining said first and second subindices;when the lower track section contains the position of onenon-zero-amplitude pulse and the upper track section contains thepositions of the four other non-zero amplitude pulses: calculating afirst subindex of three non-zero-amplitude pulses located in the uppertrack section using the procedure 3 applied to the positions of saidupper track section; calculating a second subindex of the remaining twonon-zero-amplitude pulses using the procedure 2 applied to the positionsof the entire said one track; and producing a position-and-amplitudeindex of the five non-zero-amplitude pulses by combining said first andsecond subindices; when the lower track section contains the positionsof two non-zero-amplitude pulses and the upper track section containsthe positions of the three other non-zero amplitude pulses: calculatinga first subindex of said three non-zero-amplitude pulses located in theupper track section using the procedure 3 applied to the positions ofsaid upper track section; calculating a second subindex of the remainingtwo non-zero-amplitude pulses located in the lower track section usingthe procedure 2 applied to the positions of the entire said one track;and producing a position-and-amplitude index cite fivenon-zero-amplitude pulses by combining said first and second subindices;when the lower track section contains the positions of threenon-zero-amplitude pulses and the upper track section contains thepositions of the other two non-zero amplitude pulses: calculating afirst subindex of said three non-zero-amplitude pulses located in thelower track section using the procedure 3 applied to the positions ofsaid lower track section; calculating a second subindex of the remainingtwo non-zero-amplitude pulses located in the upper track section usingthe procedure 2 applied to the positions of the entire said one track;and producing a position-and-amplitude index of the fivenon-zero-amplitude pulses by combining said first and second subindices;when the lower track section contains the positions of four non-zeroamplitude pulses and the upper track section contains the position ofthe other non-zero amplitude pulse: calculating a first subindex ofthree non-zero-amplitude pulses located in the lower track section usingthe procedure 3 applied to the positions of said lower track section;calculating a second subindex of the remaining two non-zero-amplitudepulses using the procedure 2 applied to the positions of the entire saidone track; and producing a position-and-amplitude index of the fivenon-zero-amplitude pulses by combining said first and second subindices;when the lower track section contains the positions of the fivenon-zero-amplitude pulses: calculating a first subindex of threenon-zero-amplitude pulses located in the lower track section using theprocedure 3 applied to the positions of said lower track section;calculating a second subindex of the remaining two non-zero-amplitudepulses using the procedure 2 applied to the positions of the entire saidone track; and producing a position-and-amplitude index of the fivenon-zero-amplitude pulses by combining said first and second subindices.56. A device for transforming a first signal into a second signal asdefined in claim 55, wherein when X=6: the positions of said one trackare divided into lower and upper sections; and the procedure 6comprises: when the upper track section contains the positions of thesix non-zero amplitude pulses: calculating a first subindex of fivenon-zero-amplitude pulses located in said upper track section using theprocedure 5 applied to the positions of said upper track section;calculating a second subindex of the remaining non-zero-amplitude pulseusing the procedure 1 applied to the positions of the upper tracksection; and producing a position-and-amplitude index of the sixnon-zero-amplitude pulses by combining said first and second subindices;when the lower track section contains the position of onenon-zero-amplitude pulse and the upper track section contains thepositions of the five other non-zero amplitude pulses: calculating afirst subindex of the five non-zero-amplitude pulses located in theupper track section using the procedure 5 applied to the positions ofsaid upper track section; calculating a second subindex of thenon-zero-amplitude pulse located in the lower track section using theprocedure 1 applied to the positions of said lower track section; andproducing a position-and-amplitude index of the six non-zero-amplitudepulses by combining said first and second subindices; when the lowertrack section contains the positions of two non-zero-amplitude pulsesand the upper track section contains the positions of the four othernon-zero amplitude pulses: calculating a first subindex of the fournon-zero-amplitude pulses located in the upper track section using theprocedure 4 applied to the positions of said upper track section;calculating a second subindex of the remaining two non-zero-amplitudepulses located in the lower track section using the procedure 2 appliedto the positions of said lower track section; and producing aposition-and-amplitude index of the six non-zero-amplitude pulses bycombining said first and second subindices; when the lower track sectioncontains the positions of three non-zero-amplitude pulses and the uppertrack section contains the positions of the other three non-zeroamplitude pulses: calculating a first subindex of said threenon-zero-amplitude pulses locked in the lower track section using theprocedure 3 applied to the positions of said lower track section;calculating a second subindex of the remaining three non-zero-amplitudepulses located in the upper track section using the procedure 3 appliedto the positions of the upper track section; and producing aposition-and-amplitude index of the six non-zero-amplitude pulses bycombining said first and second subindices; when the lower track sectioncontains the positions of four non-zero amplitude pulses and the uppertrack section contains the positions of the other two non-zero amplitudepulses: calculating a first subindex of the four non-zero-amplitudepulses located in the lower track section using the procedure 4 appliedto the positions of said lower track section; calculating a secondsubindex of the remaining two non-zero-amplitude pulses located in theupper track section using the procedure 2 applied to the positions ofsaid upper track section; and producing a position-and-amplitude indexof the six non-zero-amplitude pulses by combining said first and secondsubindices; when the lower track section contains the positions of fivenon-zero-amplitude pulses and the upper track section contains theposition of the remaining non-zero amplitude pulse: calculating a firstsubindex of the five non-zero-amplitude pulses located in the lowertrack section using the procedure 5 applied to the positions of saidlower track section; calculating a second subindex of the remainingnon-zero-amplitude pulse located in the upper track section using theprocedure 1 applied to the positions of said upper track section; andproducing a position-and-amplitude index of the six non-zero-amplitudepulses by combining said first and second subindices; and when the lowertrack section contains the positions of the six non-zero-amplitudepulses: calculating a first subindex of five non-zero-amplitude pulseslocated in the lower track section using the procedure 5 applied to thepositions of said lower track section; calculating a second subindex ofthe remaining non-zero-amplitude pulse located in the lower tracksection using the procedure I applied to the positions of the lowertrack section; and producing a position-and-amplitude index of the sixnon-zero-amplitude pulses by combining said first and second subindices.57. A cellular communication system for servicing a large geographicalarea divided into a plurality of cells, comprising: mobiletransmitter/receiver units; cellular base stations respectively situatedin said cells; means for controlling communication between the cellularbase stations; a bidirectional wireless communication sub-system betweeneach mobile unit situated in one cell and the cellular base station ofsaid one cell, said bidirectional wireless communication sub-systemcomprising in both the mobile unit and the cellular base station (a) atransmitter including means for encoding a speech signal and means fortransmitting the encoded speech signal, and (b) a receiver includingmeans for receiving a transmitted encoded speech signal and means fordecoding the received encoded speech signal;  wherein said speech signalencoding means and said speech signal decoding means comprise a deviceas recited in any of claims 29 to
 56. 58. A cellular network elementcomprising (a) a transmitter including means for encoding a speechsignal and means for transmitting the encoded speech signal, and (b) areceiver including means for receiving a transmitted encoded speechsignal and means for decoding the received encoded speech signal;wherein said speech signal encoding means and said speech signaldecoding means comprise a device as recited in any of claims 29 to 56.59. A cellular mobile transmitter/receiver unit comprising (a) atransmitter including means for encoding a speech signal and means fortransmitting the encoded speech signal, and (b) a receiver includingmeans for receiving a transmitted encoded speech signal and means fordecoding the received encoded speech signal; wherein said speech signalencoding means and said speech signal decoding means comprise a deviceas recited in any of claims 29 to
 56. 60. A bidirectional wirelesscommunication sub-system for a cellular communication system, saidsystem being adapted to service a geographical area divided into aplurality of cells, and comprising: mobile transmitter/receiver units;cellular base stations respectively situated in said cells; and meansfor controlling communication between the cellular base stations; saidsub-system being adapted to operate between each mobile unit situated inone cell and the cellular base station of said one cell, saidbidirectional wireless communication sub-system further comprising inboth the mobile unit and the cellular base station (a) a transmitterincluding means for encoding a speech signal and means for transmittingthe encoded speech signal, and (b) a receiver including means forreceiving a transmitted encoded speech signal and means for decoding thereceived encoded speech signal; wherein said speech signal encodingmeans and said speech signal decoding means comprise a device as recitedin any of claims 29 to
 56. 61. An encoder for encoding a sound signal,comprising sound signal processing means responsive to the sound signalfor producing speech signal encoding parameters, wherein said soundsignal processing means comprises: means for searching an algebraiccodebook in view of producing at least one of said speech signalencoding parameters; and a device as recited in any of claims 29 to 56,for indexing pulse positions and amplitudes in said algebraic codebook.62. A sound signal decoder comprising a device as recited in any ofclaims 29 to 56.